home *** CD-ROM | disk | FTP | other *** search
/ Lexis Nexis Millenium Plus Collection 1997 to 1997 / Lexis-Nexis Millenium Plus Collection - 1996-97 (Lexis-Nexis)(LA1173-0 07-96)(1996).bin / pc / toolbox / fullauth / setup.inf < prev    next >
INI File  |  1996-08-13  |  123KB  |  4,131 lines

  1. DefineVariables 
  2. Text [Product_ID]    ;;:= 001-0004-2-F96A
  3. Text [Product_Name] ;;:= Legal Research Guide: Patterns and Practice, Second Ed., 1990; Bonita K. Roberts, St. Mary's University School of Law; Linda L. Schlueter, Esq.
  4. Text [Version_Number] ;;:= F96A
  5. Text [Default_Program_Group] ;;:= LEXIS-NEXIS Legal Education
  6. Text [Default_Directory_Name] ;;:= \ln-edu\etm
  7. Text [Infobase_Title] ;;:= Legal Research Guide
  8. Text [Icon_Name] ;;:= Legal Research Guide
  9. Text [Infobase_File_Name] ;;:= RBRTSRW.NFO
  10. Text [Shadow_File_Name] ;;:= RBRTSRW.SDW
  11. Text [LDF_File_Name] ;;:= RBRTSRW.LDF
  12. Text [Price] ;;:= 19.95
  13. Text [Dial_Number] ;;:= 880-6947
  14. Text [Orig_Dial_Number] 
  15. Text [Support_Number] ;;:= 800-555-5555
  16. Text [Disk_Space_Required] ;;:= 0
  17.  
  18.  
  19. ;; Begin Procedure Definition Variables
  20. ;;
  21. Text [Reg_FName] := 
  22. Text [Reg_MName] := 
  23. Text [Reg_LName] := 
  24. Text [Reg_GradYear] := 
  25. Text [Reg_EMail] := 
  26. Text [Reg_Media] := 
  27. Text [Reg_CCNo] := 
  28. Text [Reg_ExpDate] := 
  29. Text [RegUpdate_Text] :=
  30. Text [Reg_IAttempt] := 
  31. Text [Reg_SchoolId] := 
  32. Text [Reg_Phone] := 
  33. Text [Reg_Zip] := 
  34. Text [Reg_State] := 
  35. Text [Reg_City] := 
  36. Text [Reg_Addr2] := 
  37. Text [Reg_Addr1] := 
  38. Text [Reg_LnId] :=
  39.  
  40. Number [Product_Number]
  41.  
  42. Text [SysFile_Sver] :=
  43. Text [SysFile_Tver] :=
  44.  
  45. Text [Screen_Option]
  46. Text [User_Id]
  47. Text [User_Time]
  48. Text [User_Date]
  49. Number [User_Install]
  50. Text [User_Version]
  51. Text [ReInstall_File]
  52. Text [ReInstall_Dir]
  53.  
  54. Number [Products_Ptr]   := 0
  55. Number [Products_End]   := 0
  56. Number [Count_Num]      := 0
  57. Text   [Products_Match] := BlankString
  58.  
  59. Number [Total_QueSize]
  60. Number [FSPC_OnDrive]
  61. Number [FSPC_Needed]
  62. Text   [FSPC_Directory]
  63. Number [FSPC_Additional]
  64.  
  65. TextArray [Files]
  66. Number    [Files_Idx]
  67.  
  68. Number [Dialog_RcMain] := 0
  69. Text   [Dialog_FullInstallRc] := 
  70.  
  71. ;; Variables: FSPChk
  72. Text      [FSPChk_Options]    :=   
  73. Text      [FSPChk_DirCheck]   :=
  74. Text      [FSPChk_DirString]  := 
  75. Text      [FSPChk_Drive]      := 
  76. Text      [FSPChk_CurrentDir] := 
  77. Number    [FSPChk_Count1]     := 0
  78. Number    [FSPChk_FreeSpace]  := 0
  79. Number    [FSPChk_QueSize]    := 0
  80. Number    [FSPChk_Required]   := 0
  81. Number    [FSPChk_Rc]         :=    
  82. Number    [FSPChk_MaxIdx]     :=
  83. Number    [FSPChk_Count]      := 
  84. TextArray [FSPChk_MsgList] 
  85. TextArray [FSPChk_Dir]         
  86.  
  87. ;; Variables: ISysFilesB
  88. Text      [ISysFileB_Str1]     := 
  89. Text      [ISysFileB_Dir]      :=
  90. Text      [ISysFileB_TDir]     := 
  91. Text      [ISysFileB_BFile]    := 
  92. Text      [ISysFileB_Str2]     := 
  93. Text      [ISysFileB_Str3]     := 
  94. Number    [ISysFileB_InUseIdx] := 0
  95. Number    [ISysFilesB_Group]   := 0
  96. Number    [ISysFileB_Num1]     := 0
  97. Number    [ISysFileB_DialogRC] := 
  98. Number    [ISysFileB_Rc]       := 0
  99. TextArray [ISysFileB_InUse] 
  100. TextArray [ISysFileB_Names] 
  101.  
  102. ;; Variables: GetGroup
  103. TextArray [GetGroup_Name] 
  104. Number    [GetGroup_Idx] := 0
  105. Text      [GetGroup_Select] := 
  106. TextArray [GetGroup_Info] 
  107. Number    [GetGroup_InfoIdx]    := 0
  108. Text      [GetGroup_InputGrp] := 
  109. Text      [GetGroup_Input] := 
  110.  
  111. ;; Variables: ReadWrt
  112. TextArray [ReadWrt_Dir]              ;; Array list of Drive/Directories to check 
  113. Text      [ReadWrt_Options]   :=     ;; <All> - Checks all known drives for Read/Write access
  114. Number    [ReadWrt_Rc]        :=     ;; 0  = All drives have Read/Write access/or selected dir
  115.                                      ;; >0 = Indicates one or more Drives/dirs do not have read/write  
  116. TextArray [ReadWrt_DirList]          ;; TextArray of Drive/Dirs not Read/Write
  117. Number    [ReadWrt_MaxIdx]    :=
  118. Number    [ReadWrt_Count]     := 
  119. Text      [ReadWrt_DirCheck]  :=
  120. Text      [ReadWrt_DirString] :=
  121.  
  122. ;; Variables: FSPCErr
  123. Number    [FSPCERR_Rc] := 0
  124.  
  125. ;; Variables: ReadWrtErr
  126. Number    [ReadWrtErr_Rc] := 0
  127.  
  128. ;; Variables: Parse
  129. Text      [Parse_Str]      :=              
  130. Text      [Parse_Text]     :=              
  131. Text      [Parse_Char]     :=              
  132. Number    [Parse_Count]    := 0            
  133. Number    [Parse_Len]      := 0            
  134. Number    [Parse_CharLen]  := 0           
  135. Number    [Parse_Pos1]     := 0           
  136. TextArray [Parse_Tokens]                     
  137.  
  138. Number [Dialog_SysFile] := 0
  139. Text [WinDir] :=
  140. Text [PassThru_Switch] :=
  141. Text [GetIPVL_Dir] :=
  142.  
  143. Text [Invalid_Views] := BlankString
  144.  
  145. Text [StringS] := BlankString
  146. Text [Product_Version] := 
  147. Text [Product_CompanyName] := 
  148. Text [Product_DefaultGrp] := Lexis-Nexis
  149. Text [Product_DefaultDir] := C:\LNWin
  150. Text [System_StartTime] := 
  151. Text [System_CMDLine] := 
  152. Text [System_TempDir] := 
  153. Text [System_InstallType] :=
  154.  
  155. Text [PassThru_Switch1] :=
  156. TextArray [Product_List] 
  157. TextArray [Product_LstName] 
  158. TextArray [Product_LstSize] 
  159.  
  160. Number [Product_CB] := 0
  161. Number [Product_CB1] := 0
  162. TextArray [Product_LstCMDL] 
  163. Number [Product_Cnt1] := 0
  164.  
  165. TextArray [Schools_List] 
  166. Number    [Schools_Total] := 0
  167. Text [KBytes]
  168. Number    [Schools_Cnt1] := 0
  169. Text      [Schools_Text] := 
  170. Text      [Schools_Name] :=
  171.  
  172.  
  173. Number [Dialog_Rc] := 0
  174. Text [GetIdir_IDir] := 
  175. Number [GetIDir_TQueSize] := 0
  176. Number [UniSys311_Rc] := 0
  177. Text [GetGroup_DefaultGrp] := 
  178. TextArray [InUse_FileName] 
  179. Text [TViewsDir] :=
  180.  
  181. TextArray [InUse_BackUpN] 
  182. TextArray [InUse_AppName] 
  183. Number [InUse_RC] := 0
  184. Text [ISysFileB_LogFile] := 
  185. Text [IICons_Group] := 
  186. TextArray [Views31Dirs] 
  187. Text [Views31IDir] := 
  188. Text [ScanIcons_ExePath] := 
  189. Text [ScanIcons_Text] := 
  190. Text [ScanIcons_Directory] :=
  191. Text [Disk_Space_sRequired] := 
  192. Text [Text_1] :=
  193. Number [GradYear_Beg] := 0
  194. Number [GradYear_End] := 0
  195. TextArray [GradYear_List] 
  196. Number [Reg_OSFRb] := 
  197. Number [Reg_NumOSFRb] := 0
  198.  
  199. Text [StrCheck_String] := 
  200. Text [StrCheck_Valid] := 
  201. Number [StrCheck_Cnt] := 0
  202. Number [StrCheck_Rc] := 0
  203. Text [StrCheck_Char] := 
  204. Number [StrCheck_Chk] := 0
  205. Text [StrCheck_Mask] := 
  206. Number [StrCheck_Len] := 0
  207. Number [RegUser_Count] := 0
  208. TextArray [RegUser_Data] 
  209. Number [RegUser_Idx] := 0
  210. Number [Schools_AddCnt] := 0
  211. Text [RegUser1_Back] := 
  212. Text [ByeBye_Desc] :=
  213. Text [ByeBye_Desc1] :=
  214. Number [Reg_CBLawReview] := 
  215. Number [Reg_CBLawReview1] := 
  216. Text [RegH_Addr1] := 
  217. Text [RegH_Addr2] := 
  218. Text [RegH_City] := 
  219. Text [RegH_State] := 
  220. Text [RegH_Zip] := 
  221. Text [RegH_Phone] :=
  222.  
  223. Text [Field_Error] := False
  224.  
  225. Text [TRegH_Addr1] :=
  226. Text [TRegH_Addr2] :=
  227. Text [TRegH_City] :=
  228. Text [TRegH_State] :=
  229. Text [TRegH_Zip] :=
  230. Text [TRegH_Phone] :=
  231.  
  232. Number [Last_Reg_CBLawReview] := 0
  233. Number [Last_Reg_CBLawReview1] := 0
  234. Text [Last_Reg_GradYear] := 
  235. Number [Credit_Rc] := 0
  236. Text [Student_Info] :=
  237. Text [Str1] := 
  238. Text [Str2] :=
  239. Number [S_Count] := 0
  240. Text [S_Text] :=
  241. Number [Call_Rc] := 0
  242. Text [Reg_Member] := 
  243. Text [Reg_InstallOS] := 
  244. Text [Reg_SoftwareVer] := 
  245. Text [Reg_ProductId] := 
  246. Text [TS_text] :=
  247. Text [Err_Desc] := 
  248. Text [Err_Text] :=
  249. Number [Dll_LdError] := 0
  250. Number [LdError] := 0
  251. Text [Exp_Month] := 
  252. TextArray [Exp_MonthLst] 
  253. TextArray [Exp_YearLst] 
  254. Text [Exp_Year] :=
  255. Text [Product_File] := 
  256. Number [L_Check] := 0
  257. Text [T_Desc] := 
  258. Text [CC_Text] := 
  259. Text [PI_Text] := 
  260. Text [Ist_Text] := 
  261. Text [Reg_DialPrefix] :=
  262. Number [Start_Err] := 0
  263. Text [Reg_SchoolIdX] :=
  264. Text [Price_Desc] := 
  265. Text [Price_Total] :=
  266. Text [Price_Return] := 
  267. Text [Dial_Prefix] :=
  268. Text [Reg_CBLawReview1Yn] := 
  269. Text [Reg_CBLawReviewYn] :=
  270. Text [Reg_CBLawReviewYn1] := 
  271. Text [C_Dir] := 
  272. Text [T_Dir] :=
  273. Number [KeySize] := 0
  274. Number [Error] := 0
  275. Text [Cat_Select] :=
  276. Number [BStr_Count] := 0
  277. Text [CMD_Line] :=
  278. Text [Rest_Attempt] := 
  279. Text [Rest_Media] := 
  280. Text [Rest_DLoad] := 
  281. Text [Rest_IDir] := 
  282. Text [Rest_Prod] := 
  283. Number [Restart_Type] := 0
  284. Text [FPFile_CurDrive] := 
  285. Number [SSkip] := 0
  286. TextArray [FPFile_Dirs]
  287. Text [Toolbox] :=
  288. EndDefineVariables
  289. Procedure SetUp
  290. ;;***************************************************************************
  291. ;; SetUp - Intializes instalit windows/colors/Ques support files into ShadowDirectory
  292. ;;
  293. ;; HPI - Leading the world in installation technology
  294. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  295. ;; From the HPI script library 10/01/95 - CNH
  296. ;; ---------------------------------------------------------------------------------------------------------------
  297. ;; Description: SetUp 
  298. ;; The main function of setup is to properly intialize the system
  299. ;; for script execution. This includes the loading of bitmaps into
  300. ;; the shadowdirectory. 
  301. ;;
  302. ;; Compatiability: SetUp
  303. ;; Windows, Win95, NT installers only ! 
  304. ;;
  305. ;; Calling Convention: SetUp
  306. ;; Do SetUp     
  307. ;;
  308. ;; Return Codes: SetUp
  309. ;; None
  310. ;;
  311. ;; Variables: SetUp
  312. ;; As Required
  313. ;;
  314. ;;***************************************************************************
  315.  
  316. SetBackGroundColor 0 0 255 0 0 0
  317. SetReadOnlyInquiry Off 
  318. SetReplacementInquiry Off
  319. SetDefaultBitMap Off
  320. ShowWindow Maximize
  321.  
  322. SetMouseCursor Wait
  323.  
  324. ;; All installation support files and bitmaps to temp dir
  325. ;;
  326. :SetUp_QueFiles
  327. ;;If FileExists [WindowsDirectory]\LNForms.Dat
  328. ;;   ExamineTextFile [WindowsDirectory]\LNForms.Dat
  329. ;;     [Rest_Attempt] := SettingFor IAttempt
  330. ;;     [Rest_Media]   := SettingFor Media
  331. ;;     [Rest_DLoad]   := SettingFor DownLoad
  332. ;;     [Rest_IDir]    := SettingFor IDir
  333. ;;     [Rest_Prod]    := SettingFor PVL
  334. ;;   ForgetTextFile
  335. ;;   If [Rest_Attempt] = F .And. [Rest_Media] = D .And. [Rest_DLoad] = Y
  336. ;;      Do ReStart
  337. ;;   EndIf  
  338. ;;EndIf
  339.  
  340. [Number1] := SizeOfGroup 10
  341. If [Number1] = 0
  342.    ;; Common dialog to an existing PVL
  343. EndIf
  344.  
  345. QueFileGroup 10 to ShadowDirectory
  346. ;; Init vars from Cmdline parameters
  347. ;;
  348. ;; -P:Product name   ;; Info base file name
  349. ;; Must be last parameter on command line
  350. ;;
  351. [Number1] := PositionOf "-P:" In [System_CMDLine]
  352. If [Number1] > 0
  353.    [Number1] := [Number1] + 3
  354.    [String12] := SubStringOf [System_CMDLine] From [Number1] To End
  355.    [Number1] := PositionOf " " In [String12]
  356.    If [Number1] > 0 
  357.       DecrementNumber [Number1]
  358.       [String2] := SubStringOf [String12] From 1 To [Number1]
  359.      Else
  360.       [String2] := [String12]
  361.    EndIf
  362.    [String1] := [String2].
  363.    [CMD_Line] := Yes
  364.    [Reg_Media] := D
  365.  
  366.   Else
  367.    ;; Which product to install
  368.    ClearArray [Array1] 
  369.    [Array1] := GetFileNames [InstallFromDirectory]\*.001
  370.    [Number1] := LastindexUsedFor [Array1]
  371.  
  372.    If [Number1] = 0    
  373.       [Product_File] := Not Selected
  374.       Do NoProducts
  375.      Else
  376.       [String1] := [Array1][1]
  377.    EndIf
  378.  
  379. EndIf
  380.  
  381. :Check_Idd
  382. SetTokenDelimiterTo .
  383. [Product_File] := Token 1 Of [String1]
  384.  
  385. ;;PopUp [Product_File]
  386.  
  387. If FileIsInLibrary [Product_File].IDD
  388.   Else     
  389.     Do NoProducts
  390.     Goto Check_Idd
  391. EndIf
  392.  
  393. ;;PopUp  [Product_File].IDD
  394.  
  395. QueFiles To ShadowDirectory
  396.   [Product_File].IDD
  397. EndQueFiles
  398.  
  399. ;; Check for FreeSpaceOnDrive 
  400. ClearArray [FSPChk_Dir]             ;; Clear old Array contents
  401. [FSPChk_Dir][1]  := ShadowDirectory ;; Drive/Directory to check 
  402. [FSPChk_Options] := BlankString     ;; <All> - Checks all drives for required freespace.
  403. Do FSPChk                           ;; <BlankString> - Checks for required freespace on a specified drive.
  404.  
  405. ;; Return Codes: FSPChk
  406. ;; [FSPChk_Rc]         :=     ;; 0  = All drives have adequate free space available.
  407. ;;                            ;; >0 = Indicates one or more Drives/dirs required freespace.
  408. ;; [FSPChk_MsgList][X] :=     ;; TextArray of Drive/Dirs with insufficent freespace.
  409.  
  410. Do FSPCErr
  411. If [FSPCErr_Rc] = 300 
  412.    SoLong Quietly
  413. EndIf
  414.  
  415. If [FSPCErr_Rc] = 100
  416.    UnQueAllFiles   
  417.    Goto SetUp_QueFiles
  418. EndIf
  419.  
  420. :SetUp_ReadWrt
  421. ;; Calling Convention: ReadWrt
  422. [ReadWrt_Dir][1]  := ShadowDirectory ;; Drive/Directory to check 
  423. [ReadWrt_Options] := BlankString     ;; <BlankString> - Use if no option specified
  424.                                      ;; <All> - Checks all known drives for Read/Write access
  425. Do ReadWrt                           ;; Checks for required freespace on a specified drive.
  426.  
  427. ;; Return Codes:
  428. ;; [ReadWrt_Rc]         :=     ;; 0  = All drives have Read/Write access/or selected dir
  429. ;;                             ;; >0 = Indicates one or more Drives/dirs do not have read/write  
  430. ;; [ReadWrt_DirList][X] :=     ;; TextArray of Drive/Dirs not Read/Write
  431.  
  432. Do ReadWrtErr
  433. If [ReadWrtErr_Rc] = 300 
  434.    SoLong Quietly
  435. EndIf
  436.  
  437. If [ReadWrtErr_Rc] = 100
  438.    Goto SetUp_ReadWrt
  439. EndIf
  440.  
  441. GetQuedFiles Quietly
  442.  
  443. ;; Display splash bitmap
  444. ;;
  445. LoadBitMap 15 ShadowDirectory\LexNex.Bmp LexNex1.Bmp
  446. ShowBitMap 15 @xy(1,1)
  447. UpdateWindow
  448.  
  449. ;; Load dialog bitmap
  450. ;;
  451. LoadBitMap 14 [InstallFromDirectory]\tool.bmp
  452.  
  453. ;;ShowBitMap 14 @xy(1,1)
  454. ;;PopUp Hold...
  455.  
  456. SetBackGroundModeTo Transparent
  457. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  458.  
  459. [Number1] := SizeOfGroup 100
  460. If [Number1] > 0 .And. [Reg_Media] = BlankString
  461.    If DriveIsCdrom [InstallFromDrive]
  462.       [Reg_Media] := C
  463.      Else
  464.       [Reg_Media] := F
  465.    EndIf
  466.   Else
  467.    [Reg_Media] := D
  468. EndIf
  469.  
  470. ;;PopUp [Reg_Media]
  471.  
  472. ExamineTextFile ShadowDirectory\[Product_File].IDD
  473. [Product_ID] := SettingFor Product ID
  474. [Product_Name] := SettingFor Product Name
  475. [Version_Number] := SettingFor Version Number
  476. [Default_Program_Group] := SettingFor Default Program Group
  477. [Default_Directory_Name] := SettingFor Default Directory Name
  478. [Infobase_Title] := SettingFor Infobase Title
  479. [Icon_Name] := SettingFor Icon Name
  480. [Infobase_File_Name] := SettingFor Infobase File Name
  481. [Shadow_File_Name] := SettingFor Shadow File Name
  482. [LDF_File_Name] := SettingFor LDF File Name
  483. [Price] := SettingFor Price
  484. [Dial_Number] := SettingFor Dial Number
  485. [Support_Number] := SettingFor Support Number
  486. [Disk_Space_Required] := SettingFor Disk Space Required
  487. ForgetTextFile
  488.  
  489. [Orig_Dial_Number] := [Dial_Number]
  490.  
  491. DeleteFiles From ShadowDirectory Quietly
  492.  [Product_File].IDD
  493. EndDeleteFiles
  494.  
  495. [Number20] := PositionOf "/" In [Default_Directory_Name]
  496. If [Number20] > 0
  497. [Parse_Str] := [Default_Directory_Name]
  498. [Parse_Char] := "/"
  499. Do Parse
  500.  
  501. [Number1] := 1
  502. [Number2] := [Parse_Count]
  503. [String1] := [Parse_Tokens][[Number1]]
  504. While [Number1] < [Number2]
  505.   IncrementNumber [Number1]
  506.   [String1] := [String1]\[Parse_Tokens][[Number1]]
  507. EndWhile
  508. [Default_Directory_Name] := \ln-edu    ;;[String1]
  509. EndIf
  510.  
  511. [String1] := ShadowDirectory\[Default_Directory_Name]
  512. [Default_Directory_Name] := [String1]
  513.  
  514. ;; Get Diskspace requirements
  515. ;;
  516. If [Reg_Media] = D
  517.    [Number1] := [Disk_Space_Required]
  518.    [Number2] := [Number1] / 2
  519.    [Number3] := [Number1] + [Number2] 
  520.    [Disk_Space_Required] := [Number3]
  521. EndIf
  522.  
  523. ;;PopUp [Disk_Space_Required]
  524. ;;If [Disk_Space_Required] = 0 
  525. ;;   Do QueInstallFiles
  526. ;;   [Disk_Space_Required] := QueSize 
  527. ;;   UnQueAllFiles
  528. ;;   [Disk_Space_sRequired] := FormatNumber [Disk_Space_Required]
  529. ;;   [Number9] := [Disk_Space_Required] / 1000
  530. ;;   if [Number9] = 0 then 
  531. ;;        [KBytes] := <Unknown>
  532. ;;   else
  533. [Number9] := [Disk_Space_Required] / 1024
  534. [KBytes] := FormatNumber [Number9]
  535. ;;   EndIf
  536. ;;EndIf
  537.  
  538. SetCopyAttrTo 00
  539. CopyFiles From [InstallFromDirectory] To ShadowDirectory Quietly
  540. ZClient.Dll
  541. EndCopyFiles
  542.  
  543. if [Product_ID] = 000-0003-2-F96A
  544.    [Toolbox] := Yes
  545.    [Product_Name] := CiteRite II
  546. elseif [Product_ID] = 000-0004-2-F96A
  547.    [Toolbox] := Yes
  548.    [Product_Name] := CompareRite
  549. elseif [Product_ID] = 000-0005-2-F96A
  550.    [Toolbox] := Yes
  551.    [Product_Name] := FullAuthority
  552.  
  553. EndIf
  554.  
  555.  
  556. EndProcedure
  557. Procedure ByeBye
  558. ;;***************************************************************************
  559. ;;
  560. ;; Installation Exit Procedure
  561. ;;
  562. ;;***************************************************************************
  563. ;;Do ClearBmps
  564.  
  565. SetMouseCursor Arrow
  566.  
  567. [Reg_IAttempt] := S
  568.  
  569. ModifyTextFile [WindowsDirectory]\LNForms.Dat NoBackUp Quietly
  570.   AddOrChangeLineWith (IAttempt=,,) As "IAttempt=[Reg_IAttempt]" At End
  571. EndModifyTextFile
  572.  
  573. Run ShadowDirectory\[Product_File]\SetUp.Exe NoWait
  574.  
  575. ;;PopUp Exit...
  576.  
  577. ;;ClearScreen
  578. ;;:Exit
  579. ;;[ByeBye_Desc] := '[Infobase_Title]' has been successfully installed to '[InstallationDirectory]'. You may execute '[Product_Name]' from the program group '[IICons_Group]' by clicking the icon titled '[Icon_Name]'.
  580. ;;
  581. ;;DialogBox  @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader " Installation Complete "  ;;F:\VR\SCRIPTS\INSTTYPE.DBB
  582. ;;  Font "MS Sans Serif" 8
  583. ;;  BitMap @xy(8,7) BitMap 14
  584. ;;  LText @xy(83,7) 197 90 "[ByeBye_Desc]"
  585. ;;  
  586. ;;  PushButton @xy(230,145) 45 15 "Finish" 200
  587. ;;  Static @xy(8,140) 269 1 "" BlackRect
  588. ;;EndDialogBox
  589.  
  590. SoLong Quietly
  591.  
  592.  
  593. EndProcedure
  594. Procedure Parse
  595.  
  596. ;; Initialize Parse variables
  597. ClearArray [Parse_Tokens]
  598. [Parse_Count] := 0
  599. [Parse_Len] := LengthOf [Parse_Str]
  600. [Parse_Text] := [Parse_Str]
  601.  
  602. ;; Parse CharLen must be properly set to handle single of multi character
  603. ;; parse strings.
  604. [Parse_CharLen] := LengthOf [Parse_Char]
  605. IncrementNumber [Parse_CharLen] 
  606.  
  607. ;; Check text for parse characters
  608. :Parse_CheckTokens
  609. [Parse_Pos1] := PositionOf [Parse_Char] In [Parse_Text]
  610.  
  611. ;; Extract token and place in [Parse_Tokens] array
  612. If [Parse_Pos1] > 1
  613.    DecrementNumber [Parse_Pos1]
  614.    [String1] := SubStringOf [Parse_Text] From 1 to [Parse_Pos1]
  615.    IncrementNumber [Parse_Count]
  616.    [Parse_Tokens][[Parse_Count]] := [String1]
  617.    [Parse_Pos1] := [Parse_Pos1] + [Parse_CharLen]
  618.    [Parse_Text] := SubStringOf [Parse_Text] From [Parse_Pos1] To End
  619.    Goto Parse_CheckTokens
  620. EndIf
  621.  
  622. ;; A parse character in the first string position indicates
  623. ;; a null Token
  624. If [Parse_Pos1] = 1
  625.    [Number1] := LengthOf [Parse_Text]
  626.    IncrementNumber [Parse_Count]
  627.    [Parse_Tokens][[Parse_Count]] := BlankString
  628.    [Parse_Pos1] := [Parse_Pos1] + [Parse_CharLen]
  629.    DecrementNumber [Parse_Pos1]
  630.    [Parse_Text] := SubStringOf [Parse_Text] From [Parse_Pos1] To End
  631.    Goto Parse_CheckTokens
  632. EndIf
  633.  
  634. ;; Always set [Parse_Count] according the number of
  635. ;; tokens parsed, could possibly zero.
  636. [Parse_Count] := LastIndexUsedFor [Parse_Tokens]
  637. If [Parse_Count] = 0
  638.    ClearArray [Parse_Tokens]
  639.    Exit
  640. EndIf
  641.  
  642. ;; If some tokens were parsed, check string for trailing
  643. ;; tokens and to [Parse_Tokens] array.
  644. If [Parse_Pos1] = 0
  645.    [Number1] := LengthOf [Parse_Text] 
  646.    If [Number1] > 0
  647.      IncrementNumber [Parse_Count]
  648.      [Parse_Tokens][[Parse_Count]] := [Parse_Text]
  649.    EndIf
  650. EndIf
  651.  
  652.  
  653.  
  654.  
  655.  
  656. EndProcedure
  657. Procedure FSPChk
  658. ;;***************************************************************************
  659. ;; FSPChk - Checks all Drives/Dirs freespace against QueSize  
  660. ;;
  661. ;; HPI - Leading the world in installation technology
  662. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  663. ;; From the HPI script library 09/25/95 - CNH
  664. ;; ---------------------------------------------------------------------------------------------------------------
  665. ;; Description: FSPChk 
  666. ;; Uses the Instalit function 'QueSizeForDrive' to determine if sufficent
  667. ;; free space is available on one or more drives. FSPChk will perform 
  668. ;; free space detection with a list of specified drives or directories,
  669. ;; or by using the 'All' option will automatically check all drives that
  670. ;; have files targeted for installation. FSPChk will return an array with
  671. ;; message information for any drives that fail free space requirements.
  672. ;;
  673. ;; Compatiability: FSPChk
  674. ;; Windows, Win95, NT installers only ! 
  675. ;;
  676. ;; Calling Convention: FSPChk
  677. ;; [FSPChk_Dir][X]  :=               ;; Drive/Directory to check 
  678. ;; [FSPChk_Options] := BlankString   ;; <BlankString> - Checks specified dirs for FreeSpace
  679. ;;                                   ;; <All> - OverRides specified dirs and checks Quesize
  680. ;;                                              for all targeted drives.
  681. ;; Do FSPChk                         ;; Checks for required freespace on a specified drive.
  682. ;;
  683. ;; Return Codes: FSPChk
  684. ;; [FSPChk_Rc]         :=     ;; 0  = All drives have adequate free space available.
  685. ;;                            ;; >0 = Indicates one or more Drives/dirs required freespace.
  686. ;; [FSPChk_MsgList][X] :=     ;; TextArray of Drive/Dirs with insufficent freespace.
  687. ;;
  688. ;; The array message format for [FSPChk_MsgList] is: 
  689. ;;
  690. ;; Drive_Letter: (nnnnnnbytes Qued) (nnnnnnbytes Free) (nnnnnnbytes required)
  691. ;; {QueSize} ----------^          
  692. ;; {Free Space on Drive} --------------------^
  693. ;; {Free Space Bytes Required to continue} ------------------------^
  694. ;;
  695. ;; Variables: FSPChk
  696. ;;              Text      [FSPChk_Options]    :=     
  697. ;;              Text      [FSPChk_DirCheck]   :=
  698. ;;              Text      [FSPChk_DirString]  := 
  699. ;;              Text      [FSPChk_Drive]      := 
  700. ;;              Text      [FSPChk_CurrentDir] := 
  701. ;;              Number    [FSPChk_Count1]     := 0
  702. ;;              Number    [FSPChk_FreeSpace]  := 0
  703. ;;              Number    [FSPChk_QueSize]    := 0
  704. ;;              Number    [FSPChk_Required]   := 0
  705. ;;              Number    [FSPChk_Rc]         :=     
  706. ;;              Number    [FSPChk_MaxIdx]     :=
  707. ;;              Number    [FSPChk_Count]      := 
  708. ;;              TextArray [FSPChk_MsgList] 
  709. ;;              TextArray [FSPChk_Dir]             
  710. ;;
  711. ;;***************************************************************************
  712.  
  713. [FSPChk_Count] := PositionOf All In [FSPChk_Options]
  714. If [FSPChk_Count] > 0
  715. ;; Option All
  716. [FSPChk_DirString] := B
  717. [FSPChk_Count]     := 0
  718. [FSPChk_Rc]        := 0
  719.  
  720. ClearArray [FSPChk_Dir]
  721. [FSPChk_MaxIdx] := LastIndexUsedFor [FSPChk_Dir]
  722.  
  723. While [FSPChk_DirString] < Z
  724.  IncrementString [FSPChk_DirString] 
  725.  
  726.  If DriveIsPresent [FSPChk_DirString]:\
  727.     If QueSizeForDrive [FSPChk_DirString] > 0   
  728.        IncrementNumber [FSPChk_MaxIdx]
  729.        [FSPChk_Dir][[FSPChk_MaxIdx]] := [FSPChk_DirString]:\
  730.     EndIf
  731.  EndIf
  732. EndWhile
  733.  
  734. EndIf
  735.  
  736. ;; Initialize Variables
  737. [FSPChk_MaxIdx] := LastIndexUsedFor [FSPChk_Dir]
  738. [FSPChk_Count]  := 0
  739. ClearArray [FSPChk_MsgList]
  740.  
  741. If [FSPChk_MaxIdx] = 0
  742.    Exit
  743. EndIf
  744.  
  745. While [FSPChk_Count] < [FSPChk_MaxIdx]
  746.  IncrementNumber [FSPChk_Count] 
  747.  [FSPChk_Drive]     := [FSPChk_Dir][[FSPChk_Count]]
  748.  
  749.  [FSPChk_DirCheck]  := SubStringOf [FSPChk_Drive] From 1 To 2
  750.  
  751.  [FSPChk_FreeSpace] := FreeSpaceOnDrive [FSPChk_DirCheck]
  752.  [FSPChk_QueSize]   := QueSizeForDrive [FSPChk_DirCheck]
  753.  [FSPChk_Required]  := [FSPChk_QueSize] - [FSPChk_FreeSpace]
  754.  
  755.  If [FSPChk_Required] < 0 
  756.    Else
  757.      [FSPChk_Count1] := 0 
  758.      While [FSPChk_Count1] < [FSPChk_Rc]
  759.        IncrementNumber [FSPChk_Count1]
  760.        [FSPChk_CurrentDir] := [FSPChk_MsgList][[FSPChk_Count1]]  
  761.        [FSPChk_Drive] := SubStringOf [FSPChk_CurrentDir] From 1 To 2
  762.                
  763.        If [FSPChk_DirCheck] = [FSPChk_Drive]
  764.           Goto FSPChk_Dir
  765.        EndIf
  766.      EndWhile
  767.  
  768.     IncrementNumber [FSPChk_Rc] 
  769.     [FSPChk_MsgList][[FSPChk_Rc]] := [FSPChk_DirCheck] ([FSPChk_FreeSpace] Free) ([FSPChk_Required] Additional bytes required)
  770.  
  771.  EndIf
  772.  
  773. :FSPChk_Dir
  774.  
  775. EndWhile
  776.  
  777.  
  778.  
  779. EndProcedure
  780. Procedure ReadWrt
  781. ;;***************************************************************************
  782. ;; ReadWrt - Checks for Read/Write Access on a drive/drives or directories 
  783. ;;
  784. ;; HPI - Leading the world in installation technology
  785. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  786. ;; From the HPI script library 09/25/95 - CNH
  787. ;; ---------------------------------------------------------------------------------------------------------------
  788. ;; Description: ReadWrt 
  789. ;; Uses an array list to check one or more Directories for R/w access.
  790. ;; The <All> option can be used to scan all drives present. If the <ALL>
  791. ;; option is specified, any directories specified are ignored. ReadWrt
  792. ;; returns an array called [ReadWrt_DirList], and sets [ReadWrt_Rc] to
  793. ;; the number of invalid Drives/Directories found on the system.   
  794. ;;
  795. ;; Compatiability: ReadWrt
  796. ;; Windows, NT installers only ! 
  797. ;;
  798. ;; Calling Convention: ReadWrt
  799. ;; [ReadWrt_Dir][X]  :=               ;; Drive/Directory to check 
  800. ;; [ReadWrt_Options] := BlankString   ;; <BlankString> - Use if no option specified
  801. ;;                                    ;; <All> - Checks all known drives for Read/Write access
  802. ;; Do ReadWrt                         ;; Checks for required freespace on a specified drive.
  803. ;;
  804. ;; Return Codes:
  805. ;; [ReadWrt_Rc]         :=     ;; 0  = All drives have Read/Write access/or selected dir
  806. ;;                             ;; >0 = Indicates one or more Drives/dirs do not have read/write  
  807. ;; [ReadWrt_DirList][X] :=     ;; TextArray of Drive/Dirs not Read/Write
  808. ;;
  809. ;; Variables:
  810. ;; TextArray [ReadWrt_Dir]             ;; Array list of Drive/Directories to check 
  811. ;; Text      [ReadWrt_Options]  :=     ;; <All> - Checks all known drives for Read/Write access
  812. ;; Number    [ReadWrt_Rc]       :=     ;; 0  = All drives have Read/Write access/or selected dir
  813. ;;                                     ;; >0 = Indicates one or more Drives/dirs do not have read/write  
  814. ;; TextArray [ReadWrt_DirList]  :=     ;; TextArray of Drive/Dirs not Read/Write
  815. ;; Number    [ReadWrt_MaxIdx]   :=
  816. ;; Number    [ReadWrt_Count]    := 
  817. ;; Text      [ReadWrt_DirCheck] := 
  818. ;; 
  819. ;;***************************************************************************
  820. [ReadWrt_Count] := PositionOf TargetOnly In [ReadWrt_Options]
  821. If [ReadWrt_Count] > 0
  822. ;; Option All
  823. [ReadWrt_DirString] := B
  824. [ReadWrt_Count]     := 0
  825. [ReadWrt_Rc]        := 0
  826. ClearArray [ReadWrt_DirList] 
  827.  
  828. While [ReadWrt_DirString] < Z
  829.  IncrementString [ReadWrt_DirString] 
  830.  
  831.  If QueSizeForDrive [ReadWrt_DirString] > 0
  832.     If DirectoryAllowable [ReadWrt_DirString]:\
  833.       Else
  834.        IncrementNumber [ReadWrt_Rc]
  835.        [ReadWrt_DirList][[ReadWrt_Rc]] := [ReadWrt_DirString]:\
  836.     EndIf
  837.  EndIf
  838. EndWhile
  839.  
  840. Exit
  841. EndIf
  842.  
  843. [ReadWrt_Count] := PositionOf All In [ReadWrt_Options]
  844. If [ReadWrt_Count] > 0
  845. ;; Option All
  846. [ReadWrt_DirString] := B
  847. [ReadWrt_Count]     := 0
  848. [ReadWrt_Rc]        := 0
  849. ClearArray [ReadWrt_DirList] 
  850.  
  851. While [ReadWrt_DirString] < Z
  852.  IncrementString [ReadWrt_DirString] 
  853.  
  854.  If DriveIsPresent [ReadWrt_DirString]:\
  855.     If DirectoryAllowable [ReadWrt_DirString]:\
  856.       Else
  857.        IncrementNumber [ReadWrt_Rc]
  858.        [ReadWrt_DirList][[ReadWrt_Rc]] := [ReadWrt_DirString]:\
  859.     EndIf
  860.  EndIf
  861. EndWhile
  862.  
  863. Exit
  864. EndIf
  865.  
  866. :ReadWrt_Check
  867. ;; Initialize Variables
  868. [ReadWrt_MaxIdx] := LastIndexUsedFor [ReadWrt_Dir]
  869. [ReadWrt_Count]  := 0
  870. ClearArray [ReadWrt_DirList]
  871.  
  872. ;; Check selected directories for Read/Write access
  873. While [ReadWrt_Count] < [ReadWrt_MaxIdx]
  874.  IncrementNumber [ReadWrt_Count] 
  875.  [ReadWrt_DirCheck] := [ReadWrt_Dir][[ReadWrt_Count]]
  876.  
  877.  If DirectoryAllowable [ReadWrt_DirCheck]
  878.    Else
  879.     IncrementNumber [ReadWrt_Rc]
  880.     [ReadWrt_DirList][[ReadWrt_Rc]] := [ReadWrt_DirCheck]
  881.  EndIf
  882.  
  883. EndWhile
  884.  
  885. EndProcedure
  886. Procedure FSPCERR
  887.  
  888.  
  889.  
  890. ;;***************************************************************************
  891. ;; FSPCErr - Displays an error dialog if FSPChk returns an error via [FSPChk_Rc]
  892. ;;
  893. ;; HPI - Leading the world in installation technology
  894. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  895. ;; From the HPI script library 09/25/95 - CNH
  896. ;; ---------------------------------------------------------------------------------------------------------------
  897. ;; Description: FSPCErr 
  898. ;; FSPCErr is called immediately following the FSPChk procedure. 
  899. ;; If [FSPChk_Rc] is greater than zero, then FSPCErr will display
  900. ;; an error dialog with the required information informing the 
  901. ;; user that the installation directory has insufficient space 
  902. ;; for product installation.
  903. ;;
  904. ;; Compatiability: FSPCErr
  905. ;; Windows, Win95, NT installers only ! 
  906. ;;
  907. ;; Requires: FSPCErr
  908. ;; Procedure  - FSPChk
  909. ;;
  910. ;; Calling Convention: FSPCErr
  911. ;; Do FSPCErr                         ;; Checks to see if FSPChk has detected a freespace error
  912. ;;
  913. ;; Return Codes: FSPCErr
  914. ;; If [FSPCErr_Rc] = 300              ;; User selected 'Cancel'  
  915. ;;    Do ExitConfirm
  916. ;; EndIf
  917. ;;
  918. ;; If [FSPCErr_Rc] = 100              ;; User selected 'Re-Try'
  919. ;;    UnQueAllFiles   
  920. ;;    Goto SetUp_QueFiles
  921. ;; EndIf
  922. ;;
  923. ;; Variables: FSPCErr
  924. ;; Number    [FSPCErr_Rc] 
  925. ;;***************************************************************************
  926. [FSPCErr_Rc] := 0
  927.  
  928. If [FSPChk_Rc] > 0
  929.    ClearScreen
  930.    HideBitMap 13
  931.    Delay 1   
  932.  
  933.    [Number25] := RGB(0,0,0)           ;;custom foreground color
  934.    [Number26] := RGB(192,192,192)     ;;custom background color
  935.  
  936.    UpdateWindow
  937.  
  938.    DialogBox  @xy(center,80) 284 165 Returns [FSPCERR_Rc] BlackOnLightGray UseHeader " Insufficient Free Space "  
  939.       Font "MS Sans Serif" 8
  940.       LText   @xy(84,7)  191 24 "Additional free space is required to continue installation. Please free up the required free space bytes and retry the installation."
  941.       LText   @xy(84,37) 191 24 "Please see your 'Windows 3.1 File Manager' or 'Windows 95 Explorer' to delete any unneeded files to continue installation."
  942.       LText   @xy(84,67) 191 23 "The following drive(s) have insufficient free space to continue installation."
  943.       ListBox @xy(84,87) 191 33 Uses [String1] LoadWith [FSPChk_MsgList] Border 
  944.       LText @xy(8,145) 120 16 "⌐ 1996 Emanuel Law Outlines, Inc."
  945.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  946.       PushButton @xy(135,145) 45 15 "< Retry" 100 
  947.       PushButton @xy(232,145)  45 15 "Cancel" 300
  948.       Static @xy(8,140) 269 1 "" BlackRect
  949.    EndDialogBox
  950.  
  951.    If [FSPCERR_Rc] = 300
  952.       SoLong Quietly
  953.    EndIf
  954.  
  955. EndIf
  956.  
  957. EndProcedure
  958. Procedure ReadWrtErr
  959. ;;***************************************************************************
  960. ;; ReadWrtErr - Displays an error dialog if ReadWrtCHk returns an error via [ReadWrtChk_Rc]
  961. ;;
  962. ;; HPI - Leading the world in installation technology
  963. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  964. ;; From the HPI script library 09/25/95 - CNH
  965. ;; ---------------------------------------------------------------------------------------------------------------
  966. ;; Description: ReadWrtErr 
  967. ;; ReadWrtErr is called immediately following the ReadWrtChk procedure. 
  968. ;; If [ReadWrtChk_Rc] is greater than zero, then ReadWrtErr will display
  969. ;; an error dialog with the required information informing the 
  970. ;; user that the installation directory has insufficient space 
  971. ;; for product installation.
  972. ;;
  973. ;; Compatiability: ReadWrtErr
  974. ;; Windows, Win95, NT installers only ! 
  975. ;;
  976. ;; Requires: ReadWrtErr
  977. ;; Procedure  - ReadWrtChk
  978. ;;
  979. ;; Calling Convention: ReadWrtErr
  980. ;; Do ReadWrtErr                         ;; Checks to see if ReadWrtChk has detected a freespace error
  981. ;;
  982. ;; Return Codes: ReadWrtErr
  983. ;; If [ReadWrtErr_Rc] = 300              ;; User selected 'Cancel'  
  984. ;;    Do ExitConfirm
  985. ;; EndIf
  986. ;;
  987. ;; If [ReadWrtErr_Rc] = 100              ;; User selected 'Re-Try'
  988. ;;    UnQueAllFiles   
  989. ;;    Goto SetUp_QueFiles
  990. ;; EndIf
  991. ;;
  992. ;; Variables: ReadWrtErr
  993. ;; Number    [ReadWrtErr_Rc] 
  994. ;;***************************************************************************
  995.  
  996. If [ReadWrt_Rc] > 0
  997.    ClearScreen
  998.    HideBitMap 13   
  999.  
  1000.    [Number25] := RGB(0,0,0)           ;;custom foreground color
  1001.    [Number26] := RGB(192,192,192)     ;;custom background color
  1002.  
  1003.    If FileExists [InstallFromDirectory]\tool.bmp
  1004.       LoadBitMap 14 [InstallFromDirectory]\tool.bmp
  1005.  
  1006.      UpdateWindow
  1007.     
  1008.    DialogBox  @xy(center,80) 284 165 Returns [ReadWrtErr_Rc] BlackOnLightGray UseHeader " Directory Access Denied " 
  1009.       Font "MS Sans Serif" 8
  1010.       BitMap @xy(8,8) BitMap 14
  1011.       LText   @xy(84,7)  191 44 "During installation one or more directories did not have adequate Read/Write privileges. Read/Write access will be required for the specified directories as listed below before continuing installation."
  1012.       LText   @xy(84,47) 191 24 "Please see your systems administrator concerning access privileges."
  1013.       LText   @xy(84,77) 191 23 "The following directories do not have Read/Write access or are invalid."
  1014.       ListBox @xy(84,97) 191 33 Uses [String1] LoadWith [ReadWrt_DirList] Border
  1015.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  1016.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  1017.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  1018.       Static @xy(8,140) 269 1 "" BlackRect
  1019.     EndDialogBox
  1020.  
  1021.    Else
  1022.     
  1023.    UpdateWindow
  1024.     
  1025.    DialogBox  @xy(center,80) 284 165 Returns [ReadWrtErr_Rc] BlackOnLightGray UseHeader " Directory Access Denied " 
  1026.       Font "MS Sans Serif" 8
  1027.       LText   @xy(84,7)  191 44 "During installation one or more directories did not have adequate Read/Write privileges. Read/Write access will be required for the specified directories as listed below before continuing installation."
  1028.       LText   @xy(84,47) 191 24 "Please see your systems administrator concerning access privileges."
  1029.       LText   @xy(84,77) 191 23 "The following directories do not have Read/Write access or are invalid."
  1030.       ListBox @xy(84,97) 191 33 Uses [String1] LoadWith [ReadWrt_DirList] Border
  1031.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  1032.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  1033.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  1034.       Static @xy(8,140) 269 1 "" BlackRect
  1035.    EndDialogBox
  1036.  
  1037.   EndIf
  1038.  
  1039.    If [ReadWrtErr_Rc] = 300
  1040.       SoLong Quietly
  1041.    EndIf
  1042.  
  1043.  
  1044. EndIf
  1045.  
  1046.  
  1047. EndProcedure
  1048. Procedure ExitProcedure
  1049. ModifyTextFile [WindowsDirectory]\LNForms.Dat NoBackUp Quietly
  1050.   AddOrChangeLineWith (CCNo=,,) As "CCNo=Deleted" At End
  1051.   AddOrChangeLineWith (ExpDate=,,) As "ExpDate=Deleted" At End
  1052. EndModifyTextFile
  1053.  
  1054.  
  1055. :ExitInit_Dll
  1056. [LdError] := 0
  1057. If FileExists ShadowDirectory\ZClient.Dll 
  1058. [String1] := ShadowDirectory\ZClient.Dll 
  1059. If FileIsInUse [String1]
  1060.    If [LdError] < 5
  1061.       IncrementNumber [LdError]
  1062.       LoadDll [Dll1] ShadowDirectory\ZClient.Dll 
  1063.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  1064.       UnLoadDll [Dll1]
  1065.       Goto ExitInit_Dll
  1066.    EndIf
  1067. EndIf
  1068. EndIf
  1069.  
  1070. DeleteFiles from ShadowDirectory Quietly
  1071. ZCLient.DLL
  1072. School.Dat
  1073. School.Idx
  1074. Schools.Bmp
  1075. Etm.Bmp
  1076. EtmSplsh.Bmp
  1077. InterNet.Bmp
  1078. Ln.Bmp
  1079. MillSplh.Bmp
  1080. Office.Bmp
  1081. LName.Ini
  1082. Default.Bmp
  1083. OneM.Bmp
  1084. Uni1.Bmp
  1085. ToolBox.Bmp
  1086. tool.bmp
  1087. Shell1.Bmp
  1088. LexNex.Bmp
  1089. LexNex1.Bmp
  1090. [Product_File].IDD
  1091. EndDeleteFiles
  1092.  
  1093.  
  1094. EndProcedure
  1095. Procedure CB_Check1
  1096. ;; *******************************************
  1097. If [Number10] = 1 .And. [Num10] = NoCharacter
  1098.    
  1099.    ;; Total Bytes
  1100.    [Number20]  := [String20]
  1101.    [Number31]  := [String31]
  1102.    [Number30]  := [Number20] + [Number31]
  1103.    [String31]  := [Number30]
  1104.   
  1105.    [Num10] := YesCharacter
  1106.  
  1107.    UpdateWindow ProdSelectDB
  1108. EndIf
  1109.  
  1110. If [Number10] = 0 .And. [Num10] = YesCharacter
  1111.  
  1112.    ;; Total Bytes
  1113.    [Number20]  := [String20]
  1114.    [Number31]  := [String31]
  1115.    [Number30]  := [Number31] - [Number20]
  1116.    [String31]  := [Number30]
  1117.  
  1118.    [Num10] := NoCharacter
  1119.  
  1120.    UpdateWindow ProdSelectDB
  1121. EndIf
  1122.  
  1123. ;; *******************************************
  1124. If [Number11] = 1 .And. [Num11] = NoCharacter
  1125.    
  1126.    ;; Total Bytes
  1127.    [Number21]  := [String21]
  1128.    [Number31]  := [String31]
  1129.    [Number30]  := [Number21] + [Number31]
  1130.    [String31]  := [Number30]
  1131.   
  1132.    [Num11] := YesCharacter
  1133.  
  1134.    UpdateWindow ProdSelectDB
  1135.  
  1136. EndIf 
  1137. If [Number11] = 0 .And. [Num11] = YesCharacter
  1138.  
  1139.    ;; Total Bytes
  1140.    [Number20]  := [String21]
  1141.    [Number31]  := [String31]
  1142.    [Number30]  := [Number31] - [Number21]
  1143.    [String31]  := [Number30]
  1144.  
  1145.    [Num11] := NoCharacter
  1146.  
  1147.    UpdateWindow ProdSelectDB
  1148. EndIf
  1149.  
  1150. ;; *******************************************
  1151. If [Number12] = 1 .And. [Num12] = NoCharacter
  1152.    
  1153.  
  1154.    ;; Total Bytes
  1155.    [Number21]  := [String22]
  1156.    [Number31]  := [String31]
  1157.    [Number30]  := [Number21] + [Number31]
  1158.    [String31]  := [Number30]
  1159.   
  1160.    [Num12] := YesCharacter
  1161.  
  1162.    UpdateWindow ProdSelectDB
  1163.  
  1164. EndIf 
  1165. If [Number12] = 0 .And. [Num12] = YesCharacter
  1166.  
  1167.    ;; Total Bytes
  1168.    [Number22]  := [String22]
  1169.    [Number31]  := [String31]
  1170.    [Number30]  := [Number31] - [Number22]
  1171.    [String31]  := [Number30]
  1172.  
  1173.    [Num12] := NoCharacter
  1174.  
  1175.    UpdateWindow ProdSelectDB
  1176. EndIf
  1177.  
  1178. ;; *******************************************
  1179. If [Number13] = 1 .And. [Num13] = NoCharacter
  1180.    
  1181.    ;; Total Bytes
  1182.    [Number23]  := [String23]
  1183.    [Number31]  := [String31]
  1184.    [Number30]  := [Number23] + [Number31]
  1185.    [String31]  := [Number30]
  1186.   
  1187.    [Num13] := YesCharacter
  1188.  
  1189.    UpdateWindow ProdSelectDB
  1190.  
  1191. EndIf 
  1192. If [Number13] = 0 .And. [Num13] = YesCharacter
  1193.  
  1194.    ;; Total Bytes
  1195.    [Number20]  := [String23]
  1196.    [Number31]  := [String31]
  1197.    [Number30]  := [Number31] - [Number23]
  1198.    [String31]  := [Number30]
  1199.  
  1200.    [Num13] := NoCharacter
  1201.  
  1202.    UpdateWindow ProdSelectDB
  1203. EndIf
  1204.  
  1205. ;; *******************************************
  1206. If [Number14] = 1 .And. [Num14] = NoCharacter
  1207.    
  1208.    ;; Total Bytes
  1209.    [Number24]  := [String24]
  1210.    [Number31]  := [String31]
  1211.    [Number30]  := [Number24] + [Number31]
  1212.    [String31]  := [Number30]
  1213.   
  1214.    [Num14] := YesCharacter
  1215.  
  1216.    UpdateWindow ProdSelectDB
  1217.  
  1218. EndIf 
  1219. If [Number14] = 0 .And. [Num14] = YesCharacter
  1220.  
  1221.    ;; Total Bytes
  1222.    [Number24]  := [String24]
  1223.    [Number31]  := [String31]
  1224.    [Number30]  := [Number31] - [Number24]
  1225.    [String31]  := [Number30]
  1226.  
  1227.    [Num14] := NoCharacter
  1228.  
  1229.    UpdateWindow ProdSelectDB
  1230. EndIf
  1231.  
  1232. ;; *******************************************
  1233. If [Number15] = 1 .And. [Num15] = NoCharacter
  1234.    
  1235.    ;; Total Bytes
  1236.    [Number25]  := [String25]
  1237.    [Number31]  := [String31]
  1238.    [Number30]  := [Number25] + [Number31]
  1239.    [String31]  := [Number30]
  1240.   
  1241.    [Num15] := YesCharacter
  1242.  
  1243.    UpdateWindow ProdSelectDB
  1244.  
  1245. EndIf 
  1246. If [Number15] = 0 .And. [Num15] = YesCharacter
  1247.  
  1248.    ;; Total Bytes
  1249.    [Number25]  := [String25]
  1250.    [Number31]  := [String31]
  1251.    [Number30]  := [Number31] - [Number25]
  1252.    [String31]  := [Number30]
  1253.  
  1254.    [Num15] := NoCharacter
  1255.  
  1256.    UpdateWindow ProdSelectDB
  1257. EndIf
  1258.  
  1259.  
  1260.  
  1261. EndProcedure
  1262. Procedure PSelect1
  1263. SetTokenDelimiterTo ,
  1264. ExamineTextFile ShadowDirectory\PLst.Ini
  1265.   [String1]  := LineWith (CiteRite,,)
  1266.   [String10] := Token 2 Of [String1]
  1267.   [String20]  := SizeOfGroup 100
  1268.  
  1269.   [String1]  := LineWith (Full Authority,,)
  1270.   [String11] := Token 2 Of [String1]
  1271.   [String21]  := SizeOfGroup 200
  1272.  
  1273.   [String1]  := LineWith (CompareRite,,)
  1274.   [String12] := Token 2 Of [String1]
  1275.   [String22]  := SizeOfGroup 300
  1276.  
  1277.   [String1]  := LineWith (Hot Docs for Word,,)
  1278.   [String13] := Token 2 Of [String1]
  1279.   [String23]  := SizeOfGroup 400
  1280.  
  1281.   [String1]  := LineWith (Hot Docs for Word Perfect,,)
  1282.   [String14] := Token 2 Of [String1]
  1283.   [String24]  := SizeOfGroup 500
  1284.  
  1285.   [String1]  := LineWith (Internet Companion,,)
  1286.   [String15] := Token 2 Of [String1]
  1287.   [String25]  := SizeOfGroup 600
  1288. ForgetTextFile
  1289.  
  1290.    DialogBox ProdSelectDB @xy(CenterScreen,80) 273 136 Returns [Dialog_rc] [Number25]On[Number26] UseHeader "LEXIS-NEXIS Product Selection" SysMenu
  1291.       Font "MS Sans Serif" 8
  1292.       LText @xy(8,4) 74 10 "Product Selection"
  1293.       LText @xy(208,4) 53 10 "Bytes Required"
  1294.  
  1295.       CheckBox CB_CiteRite     ProcIs CB_Check1 @xy(8,18) 117 12 "Cite Rite"                 Uses [Number10] LeftText
  1296.       CheckBox CB_FullAthority ProcIs CB_Check1 @xy(8,30) 117 12 "Full Authority"            Uses [Number11] LeftText
  1297.       CheckBox CB_CompareRite  ProcIs CB_Check1 @xy(8,41) 117 12 "CompareRite"               Uses [Number12] LeftText
  1298.       CheckBox HD_W            ProcIs CB_Check1 @xy(8,52) 117 12 "Hot Docs for Word"         Uses [Number13] LeftText
  1299.       CheckBox HD_WP           ProcIs CB_Check1 @xy(8,63) 117 12 "Hot Docs for Word Perfect" Uses [Number14] LeftText
  1300.       CheckBox HD_IComp        ProcIs CB_Check1 @xy(8,74) 117 12 "Internet Companion"        Uses [Number15] LeftText
  1301.  
  1302.       EditText @xy(208,18) 51 12 Uses [String20] Border ReadOnly
  1303.       EditText @xy(208,30) 51 12 Uses [String21] Border ReadOnly
  1304.       EditText @xy(208,41) 51 12 Uses [String22] Border ReadOnly
  1305.       EditText @xy(208,52) 51 12 Uses [String23] Border ReadOnly
  1306.       EditText @xy(208,63) 51 12 Uses [String24] Border ReadOnly
  1307.       EditText @xy(208,74) 51 12 Uses [String25] Border ReadOnly
  1308.  
  1309.       StaticText @xy(104,92) 35 10 "Totals"
  1310.       EditText @xy(208,92) 53 12 Uses [String31]
  1311.  
  1312.       PushButton @xy(196,114) 69 15 "Continue" 100
  1313.       PushButton @xy(120,114) 69 15 "< &Back" 200
  1314.  
  1315.    EndDialogBox
  1316.  
  1317.  
  1318. EndProcedure
  1319. Procedure Launch
  1320. ;; **********************************
  1321. ;; Launch Product #1
  1322. ;;
  1323. If [Number10] = 1
  1324.    
  1325.    PopUp #1 Run
  1326.  
  1327.    If OsErrorCode <> 0 .Or. OsExitCode <> 0
  1328.       PopUp Error=OSErrorCode ReturnCode=ExitCode
  1329.    EndIf
  1330.  
  1331. EndIf
  1332.  
  1333. ;; **********************************
  1334. ;; Launch Product #2
  1335. ;;
  1336. If [Number11] = 1
  1337.    
  1338.    PopUp #2 Run
  1339.  
  1340.    If OsErrorCode <> 0 .Or. OsExitCode <> 0
  1341.       PopUp Error=OSErrorCode ReturnCode=ExitCode
  1342.    EndIf
  1343.  
  1344. EndIf
  1345.  
  1346. ;; **********************************
  1347. ;; Launch Product #3
  1348. ;;
  1349. If [Number12] = 1
  1350.    
  1351.    PopUp #3 Run
  1352.  
  1353.    If OsErrorCode <> 0 .Or. OsExitCode <> 0
  1354.       PopUp Error=OSErrorCode ReturnCode=ExitCode
  1355.    EndIf
  1356.  
  1357. EndIf
  1358.  
  1359. ;; **********************************
  1360. ;; Launch Product #4
  1361. ;;
  1362. If [Number13] = 1
  1363.    
  1364.    PopUp #4 Run
  1365.  
  1366.    If OsErrorCode <> 0 .Or. OsExitCode <> 0
  1367.       PopUp Error=OSErrorCode ReturnCode=ExitCode
  1368.    EndIf
  1369.  
  1370. EndIf
  1371.  
  1372.  
  1373. ;; **********************************
  1374. ;; Launch Product #5
  1375. ;;
  1376. If [Number14] = 1
  1377.    
  1378.    PopUp #5 Run
  1379.  
  1380.    If OsErrorCode <> 0 .Or. OsExitCode <> 0
  1381.       PopUp Error=OSErrorCode ReturnCode=ExitCode
  1382.    EndIf
  1383.  
  1384. EndIf
  1385.  
  1386.  
  1387. EndProcedure
  1388. Procedure FullInstall
  1389. ;;***************************************************************************
  1390. ;;
  1391. ;; Full Install Option
  1392. ;;
  1393. ;;***************************************************************************
  1394. ;;
  1395.  
  1396. [PassThru_Switch1] := Back
  1397.  
  1398. [System_InstallType] := Full
  1399.  
  1400. :Full_InstallDirExists
  1401.  
  1402. SetInstallModeTo Install
  1403. Do QueInstallFiles
  1404.  
  1405. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  1406. ShowBitMap 13 @xy(Center,Center)
  1407. ClearScreen
  1408. HideBitMap 13
  1409. Delay 1
  1410.  
  1411. GetQuedFiles
  1412.  
  1413. if [Product_Name] = CompareRite
  1414.   SetCopyAttrTo 00
  1415.   CopyFiles From [InstallFromDirectory] To ShadowDirectory\[Product_File] Quietly
  1416.   setup.ins
  1417.   EndCopyFiles
  1418. EndIf
  1419.  
  1420. EndProcedure
  1421. Procedure Getgroup
  1422. ;;***************************************************************************
  1423. ;; GetGroup - Displays current list of all Programgroups and automatically sets
  1424. ;;            the default program group into the list if needed.
  1425. ;;
  1426. ;; HPI - Leading the world in installation technology
  1427. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  1428. ;; From the HPI script library 09/25/95 - CNH
  1429. ;; ---------------------------------------------------------------------------------------------------------------
  1430. ;; Description: GetGroup 
  1431. ;;
  1432. ;; Compatiability: GetGroup
  1433. ;; Windows, NT installers only ! 
  1434. ;;
  1435. ;; Calling Convention: GetGroup
  1436. ;; [GetGroup_DefaultGrp] :=            ;; Specified default group
  1437. ;; Do GetGroup                         ;; Calls GetGroup
  1438. ;;
  1439. ;; Return Codes:
  1440. ;; [GetGroup_Select]                   ;; Group name as selected by user
  1441. ;;
  1442. ;; Variables:
  1443. ;; Number    [GetGroup_Idx] := 0
  1444. ;; Number    [GetGroup_InfoIdx] := 0
  1445. ;; TextArray [GetGroup_Name] 
  1446. ;; TextArray [GetGroup_Info] 
  1447. ;; Text      [GetGroup_Select] := 
  1448. ;; Text      [GetGroup_DefaultGrp] := 
  1449. ;; Text      [GetIdir_Idir] := 
  1450. ;; Text      [GetGroup_InputGrp] := 
  1451. ;; Text      [GetGroup_Input] := 
  1452. ;; Text      [CPDir] := 
  1453. ;; 
  1454. ;;***************************************************************************
  1455.  
  1456. ;; Get a list of all Group Names
  1457. ClearArray [GetGroup_Name] 
  1458. [GetGroup_Name]        := GetProgramManagerGroupNames
  1459. [GetGroup_Idx]         := LastIndexUsedFor [GetGroup_Name] 
  1460. [GetGroup_Select]      := [GetGroup_DefaultGrp]
  1461. If [GetGroup_InputGrp] = BlankString
  1462.    [GetGroup_InputGrp] := [GetGroup_DefaultGrp]
  1463. EndIf  
  1464.  
  1465. ;; Check and see if default group already exists, if not add it as an option            
  1466. ClearArray [GetGroup_Info] 
  1467. [GetGroup_Idx] := 0             
  1468. [GetGroup_Info] := GetProgramManagerGroupInfo [GetGroup_InputGrp]
  1469. [GetGroup_InfoIdx] := LastIndexUsedFor [GetGroup_Info]
  1470. If [GetGroup_InfoIdx] = 0
  1471.    IncrementNumber [GetGroup_Idx] 
  1472.    [GetGroup_Name][[GetGroup_Idx]] := [GetGroup_InputGrp]
  1473. EndIf
  1474.  
  1475. ;; Prompt user for new program group name
  1476. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Select Program Group"  ;;F:\VR\SCRIPTS\PROGROUP.DBB
  1477.       Font "MS Sans Serif" 8
  1478.       BitMap @xy(8,8) BitMap 14
  1479.       Static @xy(8,140) 269 1 "" BlackRect
  1480.       PushButton @xy(180,145) 45 15 "Next >" 200
  1481.       PushButton @xy(136,145) 45 15 "< &Back" 100
  1482.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  1483.       
  1484.       LText @xy(84,7) 189 40 "An icon for the electronic materials you are currently installing will be created. The default group is LEXIS-NEXIS Legal Education. You may select another group or enter a new one in the list box below."
  1485.       LText @xy(84,52) 59 12 "Existing Groups:"
  1486.       ComboBox @xy(84,62) 191 70 Uses [GetGroup_InputGrp] LoadWith [GetGroup_Name] Border Sort
  1487. EndDialogBox
  1488.  
  1489. :GetGroup_Eoj
  1490.  
  1491. If [Dialog_Rc] = 300
  1492.    SoLong Quietly
  1493. EndIf
  1494.  
  1495. EndProcedure
  1496. Procedure NextConfirm
  1497. ;;;; Check for FreeSpaceOnDrive 
  1498. ;;ClearArray [FSPChk_Dir]             ;; Clear old Array contents
  1499. ;;[FSPChk_Dir][1]  := [GetIdir_IDir]  ;; Drive/Directory to check 
  1500. ;;[FSPChk_Options] := BlankString     ;; <All> - Checks all drives for required freespace.
  1501. ;;Do FSPChk                           ;; <BlankString> - Checks for required freespace on a specified drive.
  1502.  
  1503. :NextConfirm_ReadWrt
  1504. ;; Calling Convention: ReadWrt
  1505. [ReadWrt_Dir][1]  := [GetIdir_IDir]  ;; Drive/Directory to check 
  1506. [ReadWrt_Options] := BlankString     ;; <BlankString> - Use if no option specified
  1507.                                      ;; <All> - Checks all known drives for Read/Write access
  1508. Do ReadWrt                           ;; Checks for required freespace on a specified drive.
  1509.  
  1510. ;; Return Codes:
  1511. ;; [ReadWrt_Rc]         :=     ;; 0  = All drives have Read/Write access/or selected dir
  1512. ;;                             ;; >0 = Indicates one or more Drives/dirs do not have read/write  
  1513. ;; [ReadWrt_DirList][X] :=     ;; TextArray of Drive/Dirs not Read/Write
  1514.  
  1515. Do ReadWrtErr
  1516. If [ReadWrtErr_Rc] = 300 
  1517.    SoLong Quietly
  1518. EndIf
  1519.  
  1520. If [ReadWrtErr_Rc] = 100
  1521.    Exit
  1522. EndIf
  1523.  
  1524. ClearArray [FSPChk_MsgList]
  1525. [FSPChk_Rc] := 0
  1526.  
  1527. UnQueAllFiles
  1528. If [Reg_Media] = D
  1529.    Do QueInstallFiles
  1530.    [Number1] := QueSize
  1531.    ;;   [Number2] := 250000 
  1532.    ;;   [Number3] := [Number1] + [Number2]
  1533.    ;;   [GetIDir_TQueSize] := [Number3]
  1534.  
  1535.    ;; Check for FreeSpaceOnDrive 
  1536.    ClearArray [FSPChk_Dir]             ;; Clear old Array contents
  1537.    ;;[FSPChk_Dir][1]  := BlankString   ;; Drive/Directory to check 
  1538.    [FSPChk_Options] := All             ;; <All> - Checks all drives for required freespace.
  1539.    Do FSPChk                           ;; <BlankString> - Checks for required freespace on a specified drive.
  1540.    UnQueAllFiles
  1541.   
  1542.   Else
  1543.  
  1544.    [Number3] := [Disk_Space_Required]
  1545.    If [Number3] > FreeSpaceOnDrive [GetIdir_IDir]
  1546.       [FSPChk_Rc] := 1                           ;; 0  = All drives have adequate free space available.                            ;; >0 = Indicates one or more Drives/dirs required freespace.
  1547.       [FSPChk_MsgList][[FSPChk_Rc]] := [GetIdir_IDir]    ;; TextArray of Drive/Dirs with insufficent freespace.
  1548.       ;; Return Codes: FSPChk
  1549.       ;; [FSPChk_Rc]         :=     ;; 0  = All drives have adequate free space available.
  1550.       ;;                            ;; >0 = Indicates one or more Drives/dirs required freespace.
  1551.       ;; [FSPChk_MsgList][X] :=     ;; TextArray of Drive/Dirs with insufficent freespace.
  1552.    EndIf
  1553.  
  1554. EndIf
  1555.  
  1556. ;; Return Codes: FSPChk
  1557. ;; [FSPChk_Rc]         :=     ;; 0  = All drives have adequate free space available.
  1558. ;;                            ;; >0 = Indicates one or more Drives/dirs required freespace.
  1559. ;; [FSPChk_MsgList][X] :=     ;; TextArray of Drive/Dirs with insufficent freespace.
  1560.  
  1561. Do FSPCErr
  1562. If [FSPCErr_Rc] = 300 
  1563.    SoLong Quietly
  1564. EndIf
  1565.  
  1566. If [FSPCErr_Rc] = 100
  1567.    Exit
  1568. EndIf
  1569.  
  1570. Exit DismissDialog
  1571.  
  1572.  
  1573. EndProcedure
  1574. Procedure GetIDir
  1575.  
  1576. if [GetIdir_IDir] <> BlankString
  1577.   If .Not. DirectoryAllowable [GetIdir_IDir] 
  1578.     Dialog UserHeader "Directory Not Acceptable"
  1579.      Invalid directory specified. 
  1580.      Please enter a valid drive and directory.
  1581.     EndDialog     
  1582.     Exit
  1583.   EndIf
  1584. else
  1585.     Dialog UserHeader "Directory Not Acceptable"
  1586.      Invalid directory specified. 
  1587.      Please enter a valid drive and directory.
  1588.     EndDialog     
  1589.     Exit
  1590. EndIf
  1591.  
  1592. UnQueAllFiles
  1593. If [Reg_Media] = D
  1594.    Do QueInstallFiles
  1595.    [Number1] := QueSize
  1596.    [Number2] := 250000 
  1597.    [Number3] := [Number1] + [Number2]
  1598.    [GetIDir_TQueSize] := [Number3]
  1599.   Else
  1600.    [GetIDir_TQueSize] := [Disk_Space_Required]
  1601. EndIf
  1602. UnQueAllFiles
  1603.  
  1604. [String1] := SubStringOf [GetIdir_IDir] From 4 to End
  1605. DetermineInstallationDrive [GetIDir_TQueSize] RequireFixed 
  1606. DetermineInstallationDirectory InstallationDrive:\[String1] RequireFixed NoCreate
  1607.  
  1608. [GetIdir_IDir] := [InstallationDirectory]
  1609.  
  1610.  
  1611. EndProcedure
  1612. Procedure QueInstallFiles
  1613.  
  1614. Quefilegroup 100 to ShadowDirectory\[Product_File]
  1615.  
  1616. EndProcedure
  1617. Procedure OnLine
  1618. :Retry
  1619. SetMouseCursor Wait
  1620.  
  1621. [String1] := [Product_ID][Product_File]
  1622. SetProductClassTo "SUPER PROGRAM II"  ;; required
  1623. [Str1] := InstanceCode
  1624.  
  1625. ;;Do InstDLL
  1626.  
  1627. [L_Check] := LengthOf [Product_Name]
  1628. If [L_Check] > 165
  1629.    [T_Desc] := SubStringOf [Product_Name] From 1 To 165
  1630.    [T_Desc] := [T_Desc] ...
  1631.   Else
  1632.    [T_Desc] := [Product_Name] 
  1633. EndIf
  1634.  
  1635. if [Reg_CCNo] = BlankString 
  1636.    [StringS] := None
  1637. else
  1638.    [StringS] := [Reg_CCNo]
  1639. EndIf
  1640.  
  1641. [CC_Text]  := Card Number:       [StringS]   Exp. Date: [Reg_ExpDate]
  1642. [PI_Text]  := Product Id:            [Product_ID]     LN ID: [Reg_LnId] 
  1643. [Ist_Text] := Instance Code:      [Str1]
  1644. SetMouseCursor Arrow
  1645.  
  1646. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Unlock Software Manually"  
  1647.         Font "MS Sans Serif" 8
  1648.         LText @xy(75,7) 195 50 "To proceed with the purchase and installation of [T_Desc]."
  1649.         LText @xy(75,45) 195 40 "You will need to dial [Support_Number] while at this screen. Have your credit card, Product Id, and Instance Code ready as shown below. When the sales representative gives you the corresponding key, enter the Access Code you are given in the box below."
  1650.         Bitmap @xy(8,7) Bitmap 14
  1651.         LText @xy(75,90) 195 10 "[CC_Text]"
  1652.         LText @xy(75,100) 195 10 "[PI_Text]"
  1653.         LText @xy(75,110) 195 10 "[Ist_Text]"
  1654.  
  1655.         LText @xy(75,125) 60 10 "Access Code:"
  1656.         EditText @xy(140,125) 85 12 Uses [Str2] Border UpperCase
  1657.  
  1658.  PushButton OnLine_Next ProcIs OnLine_Check @xy(180,145) 45 15 "Next >" 200
  1659.  
  1660.  PushButton @xy(135,145) 45 15 "< &Back" 100 
  1661.  PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  1662.  Static @xy(8,140) 269 1 "" BlackRect
  1663. EndDialogBox
  1664.  
  1665. If [Dialog_Rc] = 300
  1666.    SoLong Quietly
  1667. EndIf
  1668.  
  1669.  
  1670.  
  1671.  
  1672. EndProcedure
  1673. Procedure InstallCheck
  1674. If [GetIdir_IDir] = BlankString
  1675.    [GetIdir_IDir] := [Default_Directory_Name]
  1676. EndIf
  1677.  
  1678. [InstallationDirectory] := [GetIdir_IDir] 
  1679.  
  1680. ;;[Text_1] := [Infobase_Title] will be installed to the following drive and directory. To change the installation directory, use the edit box below or select 'Change' and follow the prompts.
  1681. ;;LoadBitMap ShadowDirectory\etm.Bmp
  1682. ;;UpdateWindow
  1683. ;;
  1684. ;;;; ***Substitute source directory for ShadowDirectory argument if necessary***
  1685. ;;   DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Determine Installation Drive and Directory"  ;;ShadowDirectory\DTRINST.DBB
  1686. ;;      Font "MS Sans Serif" 8
  1687. ;;      Static @xy(84,7) 190 50 "[Text_1]"
  1688. ;;      BitMap @xy(8,7) BitMap 14
  1689. ;;      PushButton N_Button ProcIs NextConfirm @xy(180,145) 45 15 "Next >" 200
  1690. ;;      PushButton @xy(135,145) 45 15 "< &Back" 100
  1691. ;;      PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  1692. ;;      Static @xy(8,140) 269 1 "" BlackRect
  1693. ;;      GroupBox @xy(84,100) 193 32 "Install to:"
  1694. ;;      PushButton InstallDir ProcIs GetIDir @xy(224,111) 45 15 "Change" 400
  1695. ;;      EditText @xy(90,112) 129 12 Uses [GetIdir_IDir] Border UpperCase 
  1696. ;;      
  1697. ;;   EndDialogBox
  1698. ;;
  1699. ;;If [Dialog_Rc] = 300
  1700. ;;   SoLong Quietly
  1701. ;;EndIf
  1702. ;;
  1703. ;;[InstallationDirectory] := [GetIdir_IDir] 
  1704. ;;
  1705.  
  1706. Do NextConfirm
  1707. EndProcedure
  1708. Procedure IICons
  1709. ;;***************************************************************************
  1710. ;; IICons - Checks all Drives/Dirs freespace against QueSize  
  1711. ;;
  1712. ;; HPI - Leading the world in installation technology
  1713. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  1714. ;; From the HPI script library 09/25/95 - CNH
  1715. ;; ---------------------------------------------------------------------------------------------------------------
  1716. ;; Description: IICons 
  1717. ;;
  1718. ;; Compatiability: IICons
  1719. ;; Windows, Win95, NT installers only ! 
  1720. ;;
  1721. ;; Calling Convention: IICons
  1722. ;; [IICons_Dir][X]  :=               
  1723. ;; [IICons_Options] := BlankString  
  1724. ;; Do IICons                         
  1725. ;;
  1726. ;; Return Codes: IICons
  1727. ;;
  1728. ;; Variables: IICons
  1729. ;;
  1730. ;;*************************************************************
  1731.  
  1732. ;; Handle "," in command line
  1733.  
  1734. ClearScreen
  1735. ShowBitMap 13 @xy(Center,Center)
  1736. Delay 1
  1737. TextOut @xy(Center,Center) Installing icons...
  1738. [IICons_Group] := [GetGroup_InputGrp]
  1739.  
  1740. ;;PopUp AddItem([Views31IDir]\Views.Exe -i [InstallationDirectory]\[Shadow_File_Name],[Icon_Name])
  1741.  
  1742. ProgramManagerDDE
  1743.   CreateGroup([IICons_Group])
  1744.   DeleteItem([Icon_Name])
  1745.   AddItem([Views31IDir]\Views.Exe -i [InstallationDirectory]\[Shadow_File_Name],[Icon_Name])
  1746. EndProgramManagerDDe
  1747.  
  1748. ProgramManagerDDE
  1749.   CreateGroup([IICons_Group])
  1750.   ShowGroup([IICons_Group],2)
  1751. EndProgramManagerDDe
  1752.  
  1753. HideBitMap 13
  1754. ClearScreen
  1755.  
  1756.  
  1757. EndProcedure
  1758. Procedure ModIni
  1759. ClearScreen
  1760. ShowBitMap 13 @xy(Center,Center)
  1761. Delay 1
  1762. TextOut @xy(Center,Center) Modifying Ini files...
  1763.  
  1764. If .Not. FileExists [WindowsDirectory]\lname.ini
  1765.    CreateFile [WindowsDirectory]\lname.ini
  1766. EndIf
  1767.  
  1768. [Array1][1] := Master Infobase Directory
  1769. [Array1][2] := [Infobase_Title] - Master
  1770. [Array1][3] := [InstallationDirectory]\[Infobase_File_Name]
  1771. [Array1][4] := [WindowsDirectory]\lname.ini
  1772. WritePrivateProfileString Using [Array1] NoBackup
  1773.  
  1774. [Array1][1] := Infobase Directory
  1775. [Array1][2] := [Infobase_Title]
  1776. [Array1][3] := [InstallationDirectory]\[Shadow_File_Name]
  1777. [Array1][4] := [WindowsDirectory]\lname.ini
  1778. WritePrivateProfileString Using [Array1] NoBackup
  1779.  
  1780. HideBitMap 13
  1781. ClearScreen
  1782.  
  1783. EndProcedure
  1784. Procedure DDENonFatalErrorTrap
  1785. ;; Dummy procedure, do not delete
  1786. EndProcedure
  1787. Procedure FindViews31
  1788.  
  1789.  
  1790.  
  1791. SetMouseCursor Wait
  1792. Delay 1
  1793.  
  1794.  
  1795.  
  1796. ClearArray [Views31Dirs]
  1797. ClearScreen
  1798.  
  1799. ShowBitMap 13 @xy(Center,Center)
  1800. Delay 1
  1801. TextOut @xy(Center,Center) Searching for Folio VIEWS ...
  1802.  
  1803. ;; Default search for root location
  1804. ;; must add a trailing \
  1805. ;;
  1806. [Views31IDir] := BlankString
  1807.  
  1808. [FPFile_CurDrive] := C
  1809. While [FPFile_CurDrive] < Z
  1810.   If DriveIsPresent [FPFile_CurDrive] 
  1811.      If .Not. DriveIsRemoveable [FPFile_CurDrive]
  1812.        If DirectoryExists [FPFile_CurDrive]:\Views31
  1813.          If FileExists [FPFile_CurDrive]:\Views31\views.exe .AND. FileExists [FPFile_CurDrive]:\Views31\rightsmn.dll .AND. FileExists [FPFile_CurDrive]:\Views31\libstub.dll
  1814.             [Views31IDir] := [FPFile_CurDrive]:\Views31
  1815.             SetMouseCursor Arrow
  1816.             Exit
  1817.           EndIf
  1818.        EndIf
  1819.       Else
  1820.        ;; DefineDrive [FPFile_CurDrive] Absent
  1821.      EndIf
  1822.   EndIf
  1823.   IncrementString [FPFile_CurDrive]
  1824. EndWhile
  1825.  
  1826. ClearArray [Views31Dirs]
  1827. [FPFile_CurDrive] := C
  1828. While [FPFile_CurDrive] < Z
  1829. [SSkip] := 0
  1830.  
  1831.   If DriveIsPresent [FPFile_CurDrive]
  1832.  
  1833.      If DriveIsRemote [FPFile_CurDrive]            ;; Drive is on the network
  1834.         ;; PopUp Not Searching Remote [FPFile_CurDrive]      
  1835.         [SSkip] := 1
  1836.         Goto FPFile_NextDrive
  1837.      EndIf
  1838.  
  1839.      If DriveIsRemoveable [FPFile_CurDrive]            ;; Drive is removable
  1840.         ;; PopUp Not Searching Remote [FPFile_CurDrive]      
  1841.         [SSkip] := 1
  1842.         Goto FPFile_NextDrive
  1843.      EndIf
  1844.  
  1845.      If FreeSpaceOnDrive [FPFile_CurDrive] < 1    ;; CDROM Present no CDROM disk in drive
  1846.         ;; PopUp Not Searching [FPFile_CurDrive]      
  1847.         [SSkip] := 1
  1848.         Goto FPFile_NextDrive
  1849.      EndIf
  1850.  
  1851.      If FreeSpaceOnDrive [FPFile_CurDrive] = 0     ;; No freespace, cannot write to drive
  1852.         If DirectoryAllowable [FPFile_CurDrive]:\  ;; Probably a CDRom drive...
  1853.           Else 
  1854.          ;;  PopUp Not Searching [FPFile_CurDrive]
  1855.            [SSkip] := 1
  1856.               Goto FPFile_NextDrive
  1857.         EndIf
  1858.      EndIf
  1859.  
  1860.      If [SSkip] = 0
  1861.         ;; PopUp Searching [FPFile_CurDrive]
  1862.         ClearArray [FPFile_Dirs] 
  1863.         [FPFile_Dirs] := FullPathTo views.exe Origin=[FPFile_CurDrive]:\ Quietly
  1864.  
  1865. ;;GetMenuChoice
  1866. ;;[FPFile_Dirs]
  1867. ;;EndGetMenuChoice
  1868.  
  1869.         [Number1] := LastIndexUsedFor [FPFile_Dirs]
  1870.         If [Number1] > 0
  1871.            [Number2] := 0
  1872.            While [Number2] < [Number1] 
  1873.              IncrementNumber [Number2]
  1874.              [String1] := [FPFile_Dirs][[Number2]] 
  1875.  
  1876.              ;; Filter Duplicate entries
  1877.              [Number21] := 0
  1878.              [Number31] := LastIndexUsedFor [Views31Dirs]
  1879.              [Number32] := 0
  1880.  
  1881.              If [Number31] > 0 
  1882.              While [Number21] < [Number31] 
  1883.                IncrementNumber [Number21]
  1884.                [String21] := [Views31Dirs][[Number21]]
  1885.                If [String21] = [String1]
  1886.                   Goto FPFile_FDupCheck 
  1887.                EndIf
  1888.              EndWhile 
  1889.              EndIf 
  1890.              IncrementNumber [Number31]
  1891.              [Views31Dirs][[Number31]] := [String1]
  1892.              :FPFile_FDupCheck 
  1893.            EndWhile
  1894.            ;; Goto File_Found
  1895.         EndIf
  1896.      EndIf
  1897.   EndIf
  1898.  
  1899.   :FPFile_NextDrive
  1900.   IncrementString [FPFile_CurDrive]
  1901. EndWhile
  1902.  
  1903. ;;:File_Found
  1904. ;;GetMenuChoice
  1905. ;;[Views31Dirs]
  1906. ;;EndGetMenuChoice
  1907. ;;
  1908.  
  1909. ;; If not found off of the root then search all 
  1910. ;; local harddrives
  1911. ;; 
  1912.  
  1913. ;; Multiple paths to the same .exe name, prompt user to specify which path
  1914. ;; is the current path.
  1915. [Number1] := LastIndexUsedFor [Views31Dirs]
  1916.  
  1917. If [Number1] > 1
  1918. ClearScreen
  1919. HideBitMap 13
  1920.  
  1921. :Prompt_User
  1922. [ScanIcons_ExePath] := BlankString
  1923. [ScanIcons_Text]    := Because you have multiple versions of VIEWS.EXE, we were unable to determine which directory contains your current working version of VIEWS.EXE.
  1924. [Invalid_Views]     := False
  1925.  
  1926. ;; Prompt user for new program group name
  1927. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Unable To Determine Working Directory"  ;;F:\VR\SCRIPTS\PROGROUP.DBB
  1928.       Font "MS Sans Serif" 8
  1929.       BitMap @xy(8,8) BitMap 14
  1930.       Static @xy(8,140) 269 1 "" BlackRect
  1931.       PushButton FViews31 ProcIs Check_Views31 @xy(180,145) 45 15 "Next >" 200
  1932.       PushButton @xy(136,145) 45 15 "< &Back" 100 Disabled
  1933.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  1934.       LText @xy(84,7) 189 40 "[ScanIcons_Text]"
  1935.       LText @xy(84,52) 110 12 "Select one of the following directories."
  1936.       ComboBox @xy(84,60) 191 89 Uses [ScanIcons_ExePath] LoadWith [Views31Dirs] Border ;; Sort
  1937. EndDialogBox
  1938.  
  1939.    If [Dialog_Rc] = 300
  1940.       SoLong Quietly
  1941.    EndIf
  1942.  
  1943.    if [Invalid_Views] = True
  1944.       goto Prompt_User
  1945.    EndIf
  1946.  
  1947.    ;; Filter Code to filter out unwanted text leaving only the directory path.
  1948.       [Views31IDir] := PathNameOf [ScanIcons_ExePath]
  1949.       Exit
  1950.  
  1951.   Else
  1952.  
  1953.    [Views31IDir] := PathNameOf [Views31Dirs][1]
  1954.  
  1955.    if FileExists [Views31IDir]\rightsmn.dll .And. FileExists [Views31IDir]\libstub.dll
  1956.       Exit 
  1957.    else
  1958.       Dialog UserHeader "Missing Required Files"
  1959.       You are missing files that are required for
  1960.       Folio Bound Infobases.  You must reinstall 
  1961.       Folio VIEWS from LEXIS-NEXIS Office for Legal 
  1962.       Education after you complete the current
  1963.       product installation. 
  1964.       EndDialog
  1965.       Exit
  1966.    EndIf
  1967.  
  1968.   ;; Filter Code to filter out unwanted text leaving only the directory path.
  1969.  
  1970. EndIf
  1971.  
  1972.  
  1973. ;; If not found anywhere then assume that it is in the path
  1974.  
  1975. ClearScreen
  1976. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Unable To Determine Working Directory"  ;;F:\VR\SCRIPTS\PROGROUP.DBB
  1977.   Font "MS Sans Serif" 8
  1978.   BitMap @xy(8,7) BitMap 14
  1979.   LText @xy(83,7) 197 50 "The installer was unable to locate Views.exe. Please install Folio VIEWS from the LEXIS-NEXIS Millennium+ Software Collection."
  1980.   Static @xy(8,140) 269 1 "" BlackRect
  1981.   PushButton @xy(180,145) 45 15 "Next >" 200
  1982.   PushButton @xy(135,145) 45 15 "< &Back" 100 Disabled
  1983.   PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  1984. EndDialogBox
  1985.  
  1986. If [Dialog_Rc] = 300
  1987.    SoLong Quietly
  1988. EndIf
  1989.  
  1990.  
  1991. ClearScreen
  1992. HideBitMap 13
  1993. EndProcedure
  1994. Procedure LexID_Help
  1995.  
  1996.  
  1997.  
  1998. DialogBox  @xy(center,center) 170 110 Returns [Dialog_Rc] BlackOnLightGray UseHeader "LEXIS-NEXIS ID Required"
  1999.   Font "MS Sans Serif" 8
  2000.   LText @xy(5,10) 160 25 "You must have a LEXIS-NEXIS ID in order to use this software."
  2001.   LText @xy(5,30) 160 30 "First year students may install the software without a LEXIS-NEXIS ID; however, they cannot use the software without one."
  2002.   LText @xy(5,60) 160 25 "If you do not have an ID, please contact your LEXIS-NEXIS Student Account Representative."
  2003.   PushButton @xy(60,90) 45 15 "OK" 200
  2004. EndDialogBox
  2005.  
  2006. EndProcedure
  2007. Procedure RegUser1
  2008.  
  2009.  
  2010. If [RegUser1_Back] = Yes
  2011.    Goto RegUser1_Input 
  2012.   Else
  2013.    SetMouseCursor Wait
  2014.    LoadBitMap 13 ShadowDirectory\OneM.BMP
  2015.    ShowBitMap 13 @xy(Center,Center)
  2016.    TextOut OnBitMap 13 @xy(60,25) Loading Registration Form ...
  2017. EndIf
  2018.  
  2019. ;; ------------------------------
  2020. ;; Load GradYear list
  2021. ;; 
  2022. [GradYear_Beg]  := 1995
  2023. [GradYear_End]  := 0
  2024. While [GradYear_Beg] < 2002
  2025.   IncrementNumber [GradYear_End]
  2026.   [GradYear_Beg] := [GradYear_Beg] + 1
  2027.   [GradYear_List][[GradYear_End]] := [GradYear_Beg]
  2028. EndWhile
  2029.  
  2030. ;; ------------------------------
  2031. ;; Findout if user registration form file exists
  2032. ;;
  2033. If FileExists [WindowsDirectory]\LNForms.Dat
  2034.    ;; Initialize required variables
  2035.    ExamineTextFile [WindowsDirectory]\LNForms.Dat
  2036.      [Reg_LnId]      := SettingFor LnId
  2037.      [Reg_FName]     := SettingFor FName
  2038.      [Reg_LName]     := SettingFor LName
  2039.      [Reg_MName]     := SettingFor MName
  2040.      [Reg_Addr1]     := SettingFor Addr1
  2041.      [Reg_Addr2]     := SettingFor Addr2
  2042.      [Reg_City]      := SettingFor City
  2043.      [Reg_State]     := SettingFor State
  2044.      [Reg_Zip]       := SettingFor Zip
  2045.      [Reg_Phone]     := SettingFor Phone
  2046.      [RegH_Addr1]    := SettingFor RegH_Addr1
  2047.      [RegH_Addr2]    := SettingFor RegH_Addr2
  2048.      [RegH_City]     := SettingFor RegH_City
  2049.      [RegH_State]    := SettingFor RegH_State
  2050.      [RegH_Zip]      := SettingFor RegH_Zip
  2051.      [RegH_Phone]    := SettingFor RegH_Phone
  2052.      [Reg_SchoolId]  := SettingFor SchoolId
  2053.      [Reg_GradYear]  := SettingFor GradYear
  2054.      [Reg_CBLawReviewYn]  := SettingFor LawReviewYn
  2055.      [Reg_CBLawReview1Yn] := SettingFor MootCourtYn
  2056.      [Reg_EMail]        := SettingFor EMail
  2057.      [Reg_InstallOS]    := SettingFor InstallOS
  2058.  
  2059.      [Reg_OSFRb]     := SettingFor OSFRB
  2060.      [Reg_IAttempt]  := SettingFor IAttempt
  2061.      [Exp_Month]     := SettingFor ExpMonth
  2062.      [Exp_Year]      := SettingFor ExpYear
  2063.      [Reg_SchoolIdX] := SettingFor RegSchoolIdX
  2064.      [Reg_CBLawReview]  := SettingFor LawReview
  2065.      [Reg_CBLawReview1] := SettingFor MootCourt
  2066.  
  2067.    ForgetTextFile
  2068.  
  2069. EndIf 
  2070.  
  2071. ;; ------------------------------
  2072. ;; Load List of law schools
  2073. ;; Format:Law School A=1
  2074. ;;
  2075.  
  2076. If FileExists ShadowDirectory\School.Idx
  2077.    SetTokenDelimiterTo =
  2078.  
  2079.   [Schools_List] := ShadowDirectory\School.idx
  2080.  
  2081.   If [Reg_SchoolId] = BlankString
  2082.      [Reg_SchoolIdX] := [Schools_List][1] 
  2083.   EndIf
  2084.  
  2085.   Else
  2086.    [Reg_SchoolIdX] := (No Schools Found)
  2087.    [Schools_List][1] := [Reg_SchoolIdX]
  2088. EndIf
  2089.  
  2090. ;; ------------------------------
  2091. ;; Set defaults if not set
  2092. ;;
  2093. If [Reg_GradYear] = BlankString
  2094.    [Reg_GradYear] := [GradYear_Beg]
  2095. EndIf
  2096.  
  2097. If [Reg_OSFRb] = 0
  2098.    [Reg_OSFRb] := 1
  2099. EndIf
  2100.  
  2101. If [Reg_OSFRb] > 1
  2102.    [Student_Info] := Disabled   
  2103. EndIf
  2104.  
  2105. [Number1] := 0
  2106. While [Number1] < 12
  2107.   IncrementNumber [Number1]
  2108.   If [Number1] > 9
  2109.      [Exp_MonthLst][[Number1]] := [Number1]
  2110.     Else
  2111.      [Exp_MonthLst][[Number1]] := 0[Number1]
  2112.   EndIf
  2113. EndWhile
  2114. [Number1] := 95
  2115. While [Number1] < 100
  2116.   IncrementNumber [Number1]
  2117.   If [Number1] = 100
  2118.      [String1] := 00 
  2119.     Else
  2120.      [String1] := [Number1]
  2121.   EndIf
  2122.   [String2] := SubStringOf [String1] From 1 To 2 
  2123.   [Exp_YearLst][[Number1]] := [String2]
  2124. EndWhile
  2125.  
  2126. ;; ------------------------------
  2127. ;; Display user registration screen
  2128. ;;
  2129.  
  2130.  
  2131. :RegUser1_Input
  2132.  
  2133.    SetMouseCursor Arrow
  2134.    UnloadBitMap 13
  2135.  
  2136.    DialogBox RegScreen @xy(CenterScreen,80) 306 164 Returns [Dialog_Rc] BlackOnWhite UseHeader "LEXIS-NEXIS Software Registration"
  2137.       Font "MS Sans Serif" 8
  2138.  
  2139.       LText @xy(9,7) 59 12 "LEXIS-NEXIS ID"
  2140.       EditText @xy(66,5) 40 12 Uses [Reg_LnId] AutoHScroll Border
  2141.       PushButton PB_Lex ProcIs LexID_Help @xy(107,5) 12 11 "<-" 500
  2142.  
  2143.       GroupBox @xy(8,18) 124 30 "Name"
  2144.       StaticText @xy(12,25) 36 10 "First"
  2145.       EditText @xy(12,33) 44 12 Uses [Reg_FName] AutoHScroll Border
  2146.       LText @xy(60,25) 14 12 "MI"
  2147.       EditText @xy(60,33) 12 12 Uses [Reg_MName] Border UpperCase
  2148.       StaticText @xy(76,25) 36 12 "Last"
  2149.       EditText @xy(76,33) 50 12 Uses [Reg_LName] AutoHScroll Border
  2150.  
  2151.       GroupBox @xy(8,50) 124 110 "Address Information"
  2152.       LText @xy(12,58) 100 10 "Current Mailing Address"
  2153.       EditText @xy(12,68) 115 12 Uses [Reg_Addr1] AutoHScroll Border
  2154.       EditText @xy(12,80) 115 12 Uses [Reg_Addr2] AutoHScroll Border
  2155.       LText @xy(12,94) 36 10 "City"
  2156.       EditText @xy(12,104) 59 12 Uses [Reg_City] AutoHScroll Border
  2157.       LText @xy(76,94) 21 10 "State"
  2158.       EditText @xy(76,104) 16 12 Uses [Reg_State] Border UpperCase
  2159.       LText @xy(98,94) 30 10 "Zip Code"
  2160.       EditText @xy(98,104) 26 12 Uses [Reg_Zip] Border
  2161.       LText @xy(12,117) 36 10 "Phone"
  2162.       EditText @xy(12,126) 59 12 Uses [Reg_Phone] Border
  2163.       LText @xy(76,117) 42 10 "E-Mail Address"
  2164.       EditText @xy(76,126) 50 12 Uses [Reg_EMail] AutoHScroll Border
  2165.  
  2166.       PushButton PB_HomeAddr ProcIs HomeAddress @xy(23,142) 95 15 "Permanent Mailing Address" 400
  2167.  
  2168.       GroupBox @xy(138,18) 160 80 "School Information"
  2169.       LText @xy(143,25) 59 10 "Law School"
  2170.       ComboBox @xy(143,35) 150 100 Uses [Reg_SchoolIdX] LoadWith [Schools_List] DropDownList
  2171.       RadioButtonGroup ProcIs StudentType Uses [Reg_OSFRb]
  2172.          RadioButton @xy(143,52) 50 8 "Student" 
  2173.          RadioButton @xy(143,60) 50 8 "Professor"
  2174.          RadioButton @xy(143,68) 50 8 "Librarian"
  2175.          RadioButton @xy(143,76) 50 8 "Dean"
  2176.          RadioButton @xy(143,84) 70 8 "Placement Director"
  2177.  
  2178.       LText @xy(220,52) 36 10 "Grad Year"
  2179.       ComboBox CB_GradYear @xy(220,62) 30 70 Uses [Reg_GradYear] LoadWith [GradYear_List] DropDownList [Student_Info]
  2180.       CheckBox CB_LawReview  @xy(220,77) 80 8 "Law Review/Journal" Uses [Reg_CBLawReview] [Student_Info]
  2181.       CheckBox CB_LawReview1 @xy(220,85) 60 8 "Moot Court" Uses [Reg_CBLawReview1] [Student_Info]
  2182.  
  2183.       GroupBox @xy(138,100) 160 40 "Credit Information"
  2184.       LText @xy(152,110) 70 10 "Credit Card Number"
  2185.       EditText @xy(152,120) 75 12 Uses [Reg_CCNo] Border
  2186.       LText @xy(240,110) 32 10 "Exp. Date"
  2187.  
  2188.       ComboBox @xy(240,120) 20 70 Uses [Exp_Month] LoadWith [Exp_MonthLst] DropDownList
  2189.       ComboBox @xy(260,120) 20 55 Uses [Exp_Year]  LoadWith [Exp_YearLst]  DropDownList
  2190.  
  2191.       PushButton Back                          @xy(153,145) 45 15 "< &Back" 200
  2192.       PushButton RegCheck                      @xy(198,145) 45 15 "Next >" 100
  2193.       PushButton C_Button ProcIs ExitConfirm @xy(252,145)  45 15 "Cancel" 300
  2194.    EndDialogBox
  2195.  
  2196. ;; EditText @xy(240,120) 30 10 Uses [Reg_ExpDate] Border
  2197.  
  2198. if [Dialog_Rc] = 100
  2199.    do RegUser_Check
  2200.    if [Dialog_Rc] = 200 
  2201.       goto RegUser1_Input
  2202.    EndIf
  2203.  
  2204.    if [Dialog_Rc] = 300
  2205.       [Dialog_Rc] := 100
  2206.    EndIf
  2207. EndIf
  2208.  
  2209. If [Dialog_Rc] = 300
  2210.    Do ExitConfirm
  2211. EndIf
  2212.  
  2213. If [Dialog_Rc] = 200
  2214.    [RegUser1_Back] := Yes
  2215.   Else
  2216.    [RegUser1_Back] := BlankString
  2217. EndIf
  2218.  
  2219. If [Dialog_Rc] = 300
  2220.    SoLong Quietly
  2221. EndIf
  2222.  
  2223. ;; Submitt user registration form to server
  2224. ;;
  2225.  
  2226.  
  2227. If [Dialog_Rc] = 100
  2228.  
  2229.    ;; Update user registration form file
  2230.    ;;
  2231.    If FileExists [WindowsDirectory]\LNForms.Dat
  2232.       DeleteFiles From [WindowsDirectory] Quietly
  2233.         LNForms.Dat
  2234.       EndDeleteFiles
  2235.    EndIf
  2236.  
  2237.    ;; Set vars
  2238.    ;;  
  2239.    [Reg_ExpDate] := [Exp_Month]\[Exp_Year] 
  2240.  
  2241.    ;; Filter chars to correct length
  2242.    ;;    
  2243.    If [Reg_SchoolId] = BlankString
  2244.       ExamineTextFile ShadowDirectory\School.Dat
  2245.         [Reg_SchoolId] := SettingFor  [Reg_SchoolIdX]
  2246.       ForgetTextFile
  2247.    EndIf
  2248.  
  2249.    [Reg_IAttempt]  := F
  2250.  
  2251. If WindowsVersion > 3.11
  2252.    [Reg_InstallOS] := W95
  2253.   Else
  2254.    [Reg_InstallOS] := WIN
  2255. EndIf
  2256.  
  2257.  
  2258. If [Reg_CBLawReview] = 1 
  2259.    [Reg_CBLawReviewYN] := Y
  2260.   Else
  2261.    [Reg_CBLawReviewYn] := N
  2262. EndIf
  2263.  
  2264. If [Reg_CBLawReview1] = 1 
  2265.    [Reg_CBLawReview1YN] := Y
  2266.   Else
  2267.    [Reg_CBLawReview1Yn] := N
  2268. EndIf
  2269.  
  2270.    Do CharFilter
  2271.  
  2272.    AppendFile [WindowsDirectory]\LNForms.Dat
  2273.      LnId=[Reg_LnId]      
  2274.      FName=[Reg_FName]     
  2275.      LName=[Reg_LName]   
  2276.      MName=[Reg_MName]     
  2277.      Addr1=[Reg_Addr1]     
  2278.      Addr2=[Reg_Addr2]     
  2279.      City=[Reg_City]      
  2280.      State=[Reg_State]     
  2281.      Zip=[Reg_Zip]       
  2282.      Phone=[Reg_Phone]     
  2283.      RegH_Addr1=[RegH_Addr1]
  2284.      RegH_Addr2=[RegH_Addr2]
  2285.      RegH_City=[RegH_City]
  2286.      RegH_State=[RegH_State]
  2287.      RegH_Zip=[RegH_Zip]
  2288.      RegH_Phone=[RegH_Phone]
  2289.      SchoolId=[Reg_SchoolId]  
  2290.      GradYear=[Reg_GradYear]
  2291.      Member=[Reg_OSFRb]
  2292.      LawReviewYn=[Reg_CBLawReviewYn]
  2293.      MootCourtYn=[Reg_CBLawReview1Yn]  
  2294.      EMail=[Reg_EMail]     
  2295.      Media=[Reg_Media]     
  2296.      InstallOS=[Reg_InstallOS]
  2297.      SoftwareVersion=[Version_Number]
  2298.      ProductId=[Product_ID]
  2299.      CCNo=[Reg_CCNo]      
  2300.      ExpDate=[Reg_ExpDate]   
  2301.  
  2302.      [Internal Variables]
  2303.      OSFRB=[Reg_OSFRb]
  2304.      IAttempt=[Reg_IAttempt] 
  2305.      ExpMonth=[Exp_Month]
  2306.      ExpYear=[Exp_Year]   
  2307.      RegSchoolIdX=[Reg_SchoolIdX]
  2308.      LawReview=[Reg_CBLawReview]
  2309.      MootCourt=[Reg_CBLawReview1]  
  2310.      DownLoad=N
  2311.      IDir=[InstallationDirectory]
  2312.      PVL=[Product_File]
  2313.    EndAppendFile
  2314.  
  2315. ;;   If [Reg_OSFRb] > 1
  2316. ;;      [Reg_GradYear] := BlankString
  2317. ;;      [Reg_CBLawReview] := 0
  2318. ;;      [Reg_CBLawReview1] := 0
  2319. ;;   EndIf
  2320.  
  2321. EndIf
  2322.  
  2323. EndProcedure
  2324. Procedure RegUser_Check
  2325. SetMouseCursor Wait
  2326.  
  2327. EnableWindow RegScreen.Back Off
  2328. EnableWindow RegScreen.RegCheck Off
  2329. EnableWindow RegScreen.C_Button Off
  2330. EnableWindow RegScreen.Pb_HomeAddr Off
  2331.  
  2332. ;;LoadBitMap 13 ShadowDirectory\OneM.BMP
  2333. ;;TextOut OnBitMap 13 @xy(60,25) Validating Registration Form ...
  2334. ;;DialogBox OneM @xy(CenterScreen,CenterScreen) 177 35 Returns [Dialog_Rc] BlackOnWhite UseHeader " One Moment Please " Delay 2000
  2335. ;;      Font "MS Sans Serif" 8
  2336. ;;      Bitmap @xy(0,0) Bitmap 13
  2337. ;;EndDialogBox
  2338. UpdateWindow
  2339. ClearScreen
  2340. Delay 1
  2341. LoadBitMap 13 ShadowDirectory\OneM.BMP
  2342. ShowBitMap 13 @xy(Center,Center)
  2343. Delay 1
  2344. TextOut @xy(Center,Center) Validating Registration Form ...
  2345.  
  2346.  
  2347. SetMouseCursor Wait
  2348.  
  2349. ;;CreateBitMap 5 300 75
  2350. ;;Rectangle @xy(0,0) @xy(300,75) OnBitMap 5
  2351. ;;CopyPixels 200 100 OnBitMap 5 to @xy(300,200) 
  2352.  
  2353. ClearArray [RegUser_Data]
  2354. [RegUser_Count] := 0
  2355.  
  2356. ;; ----------------------------------
  2357. ;; Verify lexis nexis id
  2358. ;;
  2359. If ([Reg_GradYear] < 1999 .And. [Reg_OSFRb] = 1) .OR. [Reg_OSFRb] > 1 .OR. [Reg_LnId] <> BlankString
  2360.   If [Reg_LnId] = BlankString
  2361.     IncrementNumber [RegUser_Count]
  2362.     [RegUser_Data][[RegUser_Count]] := LEXIS-NEXIS ID (No data entered)
  2363.     Goto Verify_FName
  2364.   EndIf
  2365. [StrCheck_String] := [Reg_LnId]
  2366. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
  2367. [StrCheck_Mask]   := BlankString
  2368. [StrCheck_Rc]     := 0
  2369. Do StrCheck
  2370. If [StrCheck_Rc] > 0
  2371.    IncrementNumber [RegUser_Count]
  2372.    [RegUser_Data][[RegUser_Count]] := LEXIS-NEXIS ID (A-Z,0-9) only!
  2373.    Goto Verify_FName
  2374. EndIf
  2375. [NUmber29] := LengthOf [Reg_LnId]
  2376.  If [NUmber29] <> 7
  2377.    IncrementNumber [RegUser_Count]
  2378.    [RegUser_Data][[RegUser_Count]] := LEXIS-NEXIS ID (7 characters) only!
  2379.    Goto Verify_FName
  2380.  EndIf
  2381. EndIf
  2382.  
  2383. ;; ----------------------------------
  2384. ;; Verify First name
  2385. ;;
  2386. :Verify_FName
  2387. If [Reg_FName] = BlankString
  2388.    IncrementNumber [RegUser_Count]
  2389.    [RegUser_Data][[RegUser_Count]] := First Name (No data entered)
  2390.    Goto Verify_LName
  2391. ENdIf
  2392. [StrCheck_String] := [Reg_FName]
  2393. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ "
  2394. [StrCheck_Mask]   := BlankString
  2395. [StrCheck_Rc]     := 0
  2396. Do StrCheck
  2397. If [StrCheck_Rc] > 0
  2398.    IncrementNumber [RegUser_Count]
  2399.    [RegUser_Data][[RegUser_Count]] := First Name (A-Z,Space) only!
  2400. EndIf
  2401.  
  2402. ;; ----------------------------------
  2403. ;; Verify Middle Initial
  2404. ;;
  2405. :Verify_MI
  2406. [StrCheck_String] := [Reg_MName]
  2407. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ "
  2408. [StrCheck_Mask]   := BlankString
  2409. [StrCheck_Rc]     := 0
  2410. Do StrCheck
  2411. If [StrCheck_Rc] > 0
  2412.    IncrementNumber [RegUser_Count]
  2413.    [RegUser_Data][[RegUser_Count]] := Middle Initial (A-Z,Space) only!
  2414. EndIf
  2415.  
  2416. ;; ----------------------------------
  2417. ;; Verify last name
  2418. ;;
  2419. :Verify_LName
  2420. If [Reg_LName] = BlankString
  2421.    IncrementNumber [RegUser_Count]
  2422.    [RegUser_Data][[RegUser_Count]] := Last Name (No data entered)
  2423.    Goto Verify_Addr1
  2424. EndIf
  2425. [StrCheck_String] := [Reg_LName]
  2426. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ- "
  2427. [StrCheck_Mask]   := BlankString
  2428. [StrCheck_Rc]     := 0
  2429. Do StrCheck
  2430. If [StrCheck_Rc] > 0
  2431.    IncrementNumber [RegUser_Count]
  2432.    [RegUser_Data][[RegUser_Count]] := Last Name (A-Z,Space) only! 
  2433. EndIf
  2434.  
  2435. ;; ----------------------------------
  2436. ;; Verify address information
  2437. ;;
  2438. :Verify_Addr1
  2439. If [Reg_Addr1] = BlankString .And. [Reg_Addr1] = BlankString
  2440.    IncrementNumber [RegUser_Count]
  2441.    [RegUser_Data][[RegUser_Count]] := Address (No data entered)
  2442.    Goto Verify_City
  2443. EndIf
  2444. [StrCheck_String] := [Reg_Addr1][Reg_Addr2]
  2445. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789-.,#"
  2446. [StrCheck_Mask]   := BlankString
  2447. [StrCheck_Rc]     := 0
  2448. Do StrCheck
  2449. If [StrCheck_Rc] > 0
  2450.    IncrementNumber [RegUser_Count]
  2451.    [RegUser_Data][[RegUser_Count]] := Address (A-Z,Space,-.,#) only!
  2452. EndIf
  2453.  
  2454. ;; ----------------------------------
  2455. ;; Verify City information
  2456. ;;
  2457. :Verify_City
  2458. If [Reg_City] = BlankString
  2459.    IncrementNumber [RegUser_Count]
  2460.    [RegUser_Data][[RegUser_Count]] := City (No data entered)
  2461.    Goto Verify_State
  2462. EndIf
  2463. [StrCheck_String] := [Reg_City]
  2464. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ "
  2465. [StrCheck_Mask]   := BlankString
  2466. [StrCheck_Rc]     := 0
  2467. Do StrCheck
  2468. If [StrCheck_Rc] > 0
  2469.    IncrementNumber [RegUser_Count]
  2470.    [RegUser_Data][[RegUser_Count]] := City (A-Z,Space) only!
  2471. EndIf
  2472.  
  2473. ;; ----------------------------------
  2474. ;; Verify State information
  2475. ;;
  2476. :Verify_State
  2477. If [Reg_State] = BlankString
  2478.    IncrementNumber [RegUser_Count]
  2479.    [RegUser_Data][[RegUser_Count]] := State (No data entered)
  2480.    Goto Verify_Zip
  2481. EndIf
  2482. [StrCheck_String] := [Reg_State]
  2483. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  2484. [StrCheck_Mask]   := BlankString
  2485. [StrCheck_Rc]     := 0
  2486. Do StrCheck
  2487. If [StrCheck_Rc] > 0
  2488.    IncrementNumber [RegUser_Count]
  2489.    [RegUser_Data][[RegUser_Count]] := State (A-Z) only!
  2490. EndIf
  2491.  
  2492. ;; ----------------------------------
  2493. ;; Verify Zip information
  2494. ;;
  2495. :Verify_Zip
  2496. [NUmber29] := LengthOf [Reg_Zip]
  2497. If [NUmber29] <> 5
  2498.    IncrementNumber [RegUser_Count]
  2499.    [RegUser_Data][[RegUser_Count]] := Zip Code (5 digits required)
  2500.    Goto Verify_Phone
  2501. EndIf
  2502. If [Reg_Zip] = BlankString
  2503.    IncrementNumber [RegUser_Count]
  2504.    [RegUser_Data][[RegUser_Count]] := Zip Code (No data entered)
  2505.    Goto Verify_Phone
  2506. EndIf
  2507. [StrCheck_String] := [Reg_Zip]
  2508. [StrCheck_Valid]  := "0123456789-"
  2509. [StrCheck_Mask]   := BlankString
  2510. [StrCheck_Rc]     := 0
  2511. Do StrCheck
  2512. If [StrCheck_Rc] > 0
  2513.    IncrementNumber [RegUser_Count]
  2514.    [RegUser_Data][[RegUser_Count]] := Zip (0-9,-) only!
  2515. EndIf
  2516.  
  2517. ;; ----------------------------------
  2518. ;; Verify Phone information
  2519. ;;
  2520. :Verify_Phone
  2521. [StrCheck_String] := [Reg_Phone]
  2522. [StrCheck_Valid]  := "0123456789-() "
  2523. [StrCheck_Mask]   := BlankString
  2524. [StrCheck_Rc]     := 0
  2525. Do StrCheck
  2526. If [StrCheck_Rc] > 0
  2527.    IncrementNumber [RegUser_Count]
  2528.    [RegUser_Data][[RegUser_Count]] := Phone (0-9,(,),-,Space) only!
  2529. EndIf
  2530.  
  2531. ;; ----------------------------------
  2532. ;; Verify CC Exp Date Entry
  2533. ;;
  2534. :Verify_ExpDate
  2535. If [Exp_Month] = BlankString
  2536.    IncrementNumber [RegUser_Count]
  2537.    [RegUser_Data][[RegUser_Count]] := Expiration Date (No month entered)
  2538. EndIf
  2539.  
  2540. [Number1] := LengthOf [Exp_Year]
  2541. If [Number1] = 0
  2542.    IncrementNumber [RegUser_Count]
  2543.    [RegUser_Data][[RegUser_Count]] := Expiration Date (No year Entered)
  2544. EndIf
  2545.  
  2546. ;; ----------------------------------
  2547. ;; Verify CC 
  2548. ;;
  2549. LoadDll [Dll1] ShadowDirectory\ZClient.Dll
  2550.  
  2551. CallDll [Dll1] HuValidateCCNumber ([Reg_CCNo]) Returns short [Call_Rc]
  2552. SetMouseCursor Arrow
  2553. If [Call_Rc] = 0
  2554.    UnLoadDll [Dll1]
  2555.    IncrementNumber [RegUser_Count]
  2556.    If [Reg_CCNo] = BlankString
  2557.        [RegUser_Data][[RegUser_Count]] := Invalid Credit Card (None)
  2558.    Else
  2559.        [RegUser_Data][[RegUser_Count]] := Invalid Credit Card ([Reg_CCNo])
  2560.  
  2561.    EndIf
  2562. Else 
  2563.    UnLoadDll [Dll1]
  2564. EndIf
  2565.  
  2566. [RegUser_Idx] := LastIndexUsedFor [RegUser_Data]
  2567.  
  2568. ClearScreen
  2569. UnLoadBitMap 13
  2570. Delay 1
  2571. ;;UpdateWindow
  2572.  
  2573. If [RegUser_Idx] > 0
  2574.    ClearArray [Array1]
  2575.    Beep
  2576.    Beep 
  2577.    DialogBox  @xy(Center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "Invalid or missing data"  ;;F:\VR\SCRIPTS\INSTTYPE.DBB
  2578.       Font "MS Sans Serif" 8
  2579.       Bitmap @xy(8,7) Bitmap 14
  2580.       LText @xy(84,7) 181 30 "One or more required fields have missing or invalid data. Please refer to the list below and make the necessary corrections."
  2581.       LText @xy(84,45) 181 23 "The following fields have missing or invalid data."
  2582.       ListBox @xy(84,55) 160 80 Uses [String28] LoadWith [RegUser_Data]
  2583.       Static @xy(8,140) 269 1 "" BlackRect
  2584.       PushButton @xy(180,145) 45 15 "< &Back " 200
  2585.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  2586.    EndDialogBox
  2587.  
  2588.    If [Dialog_rc] = 300
  2589.       SoLong Quietly
  2590.    EndIf
  2591.  
  2592.    Do Pb_ExitOn
  2593.  
  2594.    Exit
  2595. EndIf
  2596.  
  2597. ;; Password screen
  2598. ;;
  2599. :GetUserPsw
  2600. [Reg_SchoolId] := BlankString
  2601. If "[Reg_SchoolIdX]" = "Other" .And. [Reg_OSFRb] = 4
  2602.  
  2603.     [String1] := BlankString
  2604.  
  2605.     DialogBox RegScreen @xy(CenterScreen,CenterScreen) 160 85 Returns [Dialog_Rc] BlackOnWhite UseHeader "Enter Password"
  2606.       Font "MS Sans Serif" 8
  2607.       LText @xy(12,6) 136 30 "Please enter your password. Once you have entered a valid password, click 'OK' to continue."
  2608.       EditText @xy(45,44) 70 12 Uses [String1] PassWord Uppercase
  2609.       PushButton @xy(20,65) 50 15 "Cancel" 200 
  2610.       DefPushButton @xy(87,65) 50 15 "OK" 300 
  2611.     EndDialogBox
  2612.  
  2613.     If [Dialog_Rc] = 200
  2614.        Goto VCC_Display
  2615.     EndIf
  2616.  
  2617.     [String2] := CrcOfString [String1]
  2618.  
  2619.     If [String2] <> E55F
  2620.        Beep
  2621.        Beep
  2622.        Goto GetUserPsw
  2623.       Else
  2624.        [Reg_SchoolId] := 999
  2625.     EndIf
  2626. EndIf
  2627.  
  2628. :VCC_Display
  2629.  
  2630. ;; Verify that the user wants to use the credit card
  2631. ;;
  2632. SetMouseCursor Wait
  2633. [StringS] := Your credit card is about to be charged for [Product_Name]. Are you sure you wish to proceed?
  2634.  
  2635. if [Reg_SchoolId] = 999
  2636.    [StringS] := Your credit card will NOT be charged.
  2637.    Goto CC_Check
  2638. EndIf
  2639.  
  2640.  
  2641. :CC_Check
  2642. DialogBox RegScreen @xy(CenterScreen,CenterScreen) 160 85 Returns [Dialog_Rc] BlackOnWhite UseHeader "Credit Verification"
  2643.   Font "MS Sans Serif" 8
  2644.   LText @xy(12,6) 136 40 "[StringS]"
  2645.  
  2646.   PushButton @xy(87,60) 50 15 "Submit Order" 300 
  2647.   PushButton @xy(20,60) 50 15 "Cancel Order" 200 
  2648.  
  2649. EndDialogBox
  2650.  
  2651. If [Dialog_Rc] = 200
  2652.    Do Pb_ExitOn
  2653.    Exit
  2654. EndIf
  2655.  
  2656.  
  2657. Exit DismissDialog 
  2658. UpdateWindow
  2659.  
  2660. EndProcedure
  2661. Procedure StrCheck
  2662.  
  2663.  
  2664. ;;[StrCheck_String] := 
  2665. ;;[StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTU"
  2666. ;;[StrCheck_Mask]   := BlankString
  2667. ;;[StrCheck_Rc]     := 0
  2668.  
  2669. SetMouseCursor Wait
  2670.  
  2671. ;; AlphaOnly Check
  2672. [StrCheck_Len] := LengthOf [StrCheck_String]
  2673. [StrCheck_Cnt] := 0
  2674. While [StrCheck_Cnt] < [StrCheck_Len]
  2675.   IncrementNumber [StrCheck_Cnt]
  2676.   [StrCheck_Char] := SubStringOf [StrCheck_String] From [StrCheck_Cnt] to [StrCheck_Cnt]
  2677.   [StrCheck_Chk]  := PositionOf [StrCheck_Char] In [StrCheck_Valid]
  2678.   If [StrCheck_Chk] = 0
  2679.      [StrCheck_Rc] := 1
  2680.      Exit
  2681.   EndIf
  2682. EndWhile
  2683. EndProcedure
  2684. Procedure Check_Views31
  2685. ;;ClearArray [Array1]
  2686. ;;ClearArray [RegUser_Data]
  2687. ;;[RegUser_Count] := 0
  2688. [Invalid_Views] := False
  2689.  
  2690. if [ScanIcons_ExePath] <> BlankString
  2691.    Goto Check_Views31_Ok
  2692. EndIf
  2693.  
  2694. IncrementNumber [RegUser_Count]
  2695. [RegUser_Data][[RegUser_Count]] := Invalid Entry (Must select a listed directory)
  2696.  
  2697.    ClearArray [Array10]
  2698.    Beep
  2699.    Beep 
  2700.    DialogBox  @xy(Center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "Invalid or missing data" 
  2701.       Font "MS Sans Serif" 8
  2702.       Bitmap @xy(8,7) Bitmap 14
  2703.       LText @xy(84,7) 181 30 "One or more required fields have missing or invalid data. Please refer to the list below and make the necessary corrections."
  2704.       LText @xy(84,45) 181 23 "The following fields have missing or invalid data."
  2705.       ListBox @xy(84,55) 160 80 Uses [String28] LoadWith [RegUser_Data]
  2706.       Static @xy(8,140) 269 1 "" BlackRect
  2707.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  2708.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  2709.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  2710.    EndDialogBox
  2711.  
  2712.    If [Dialog_rc] = 300
  2713.       SoLong Quietly
  2714.    EndIf
  2715.    [Invalid_Views] := True
  2716.  
  2717. :Check_Views31_Ok
  2718. IF [Invalid_Views] = True
  2719.    Exit
  2720. else
  2721.    [TViewsDir] := PathNameOf [ScanIcons_ExePath]
  2722.    [Invalid_Views] := False
  2723.  
  2724.    if FileExists [TViewsDir]\rightsmn.dll .And. FileExists [TViewsDir]\libstub.dll
  2725.       Exit DismissDialog 
  2726.    else
  2727.       Dialog UserHeader "Missing Required Files"
  2728.       You are missing files that are required for
  2729.       Folio Bound Infobases.  You must reinstall 
  2730.       Folio VIEWS from LEXIS-NEXIS Office for Legal 
  2731.       Education after you complete the current
  2732.       product installation. 
  2733.       EndDialog
  2734.       Exit DismissDialog
  2735.    EndIf
  2736. EndIf
  2737.  
  2738. EndProcedure
  2739. Procedure HomeAddress
  2740.  
  2741. [TRegH_Addr1] := [RegH_Addr1]
  2742. [TRegH_Addr2] := [RegH_Addr2]
  2743. [TRegH_City]  := [RegH_City]
  2744. [TRegH_State] := [RegH_State]
  2745. [TRegH_Zip]   := [RegH_Zip]
  2746. [TRegH_Phone] := [RegH_Phone]
  2747.  
  2748. :Address1
  2749.  
  2750. [Field_Error] := False
  2751.  
  2752. DialogBox HomeScreen @xy(CenterScreen,CenterScreen) 160 135 Returns [Dialog_Rc] BlackOnWhite UseHeader "Permanent Address"
  2753.       Font "MS Sans Serif" 8
  2754.       LText @xy(12,6) 150 40 "Add your permanent mailing address here if your permanent address differs from your current mailing address."
  2755.       LText @xy(12,35) 100 10 "Permanent Address"
  2756.       EditText @xy(12,45) 130 12 Uses [TRegH_Addr1] AutoHScroll Border
  2757.       EditText @xy(12,58) 130 12 Uses [TRegH_Addr2] AutoHScroll Border
  2758.       LText @xy(12,72) 36 10 "City"
  2759.       EditText @xy(12,82) 59 12 Uses [TRegH_City] AutoHScroll Border
  2760.       LText @xy(76,72) 21 10 "State"
  2761.       EditText @xy(76,82) 16 12 Uses [TRegH_State] Border UpperCase
  2762.       LText @xy(100,72) 39 10 "Zip Code"
  2763.       EditText @xy(100,82) 43 12 Uses [TRegH_Zip] Border
  2764.       LText @xy(12,97) 36 10 "Phone"
  2765.       EditText @xy(12,106) 59 12 Uses [TRegH_Phone] AutoHScroll Border
  2766.  
  2767.       PushButton ProcIs HAddr_Check @xy(93,98) 50 15 "OK" 100
  2768.       PushButton @xy(93,115) 50 15 "Cancel" 300 
  2769. EndDialogBox
  2770.  
  2771. if [Field_Error] = True
  2772.    goto Address1
  2773. EndIf
  2774.  
  2775. If [Dialog_Rc] = 100
  2776.      [RegH_Addr1]    := [TRegH_Addr1]
  2777.      [RegH_Addr2]    := [TRegH_Addr2]
  2778.      [RegH_City]     := [TRegH_City]
  2779.      [RegH_State]    := [TRegH_State]
  2780.      [RegH_Zip]      := [TRegH_Zip]
  2781.      [RegH_Phone]    := [TRegH_Phone]
  2782. EndIf
  2783.  
  2784. EndProcedure
  2785. Procedure StudentType
  2786.  
  2787.  
  2788.  
  2789. if [Reg_OSFRb] = 1
  2790.  
  2791.                 EnableWindow RegScreen.CB_GradYear
  2792.                 EnableWindow RegScreen.CB_LawReview
  2793.                 EnableWindow RegScreen.CB_LawReview1
  2794.  
  2795.         else
  2796.  
  2797.                 EnableWindow RegScreen.CB_GradYear Off
  2798.                 EnableWindow RegScreen.CB_LawReview Off
  2799.                 EnableWindow RegScreen.CB_LawReview1 Off
  2800.  
  2801.  [Reg_CBLawReview] := 0
  2802.  [Reg_CBLawReview1] := 0
  2803.  
  2804. Endif
  2805.  
  2806.  
  2807. ;;      if [Reg_OSFRb] = 4 .And. [Reg_SchoolId] = Other
  2808. ;;
  2809. ;;              DialogBox @xy(center,center) 100 86 Returns [PassW] BlackOnLightGray UseHeader "LEXIS-NEXIS Password"
  2810. ;;                Font "MS Sans Serif" 8
  2811. ;;                LText @xy(8,17) 80 30 "Please enter your password:"
  2812. ;;                EditText @xy(12,30) 10 10 Uses [PWord] Border UpperCase PassWord
  2813. ;;                DefPushButton @xy(54,68) 38 14 "OK" 100
  2814. ;;              EndDialogBox
  2815. ;;              
  2816. ;;              Dialog
  2817. ;;                The password is [PWord]
  2818. ;;              EndDialog
  2819. ;;      Endif
  2820. ;; Must encrypt password and set school to 999
  2821. ;;      if [PWord] = EDU
  2822. ;;              Reg_Sl_Number := 999
  2823. ;;              Dialog
  2824. ;;                 Your credit card will NOT be charged.
  2825. ;;              EndDialog
  2826. ;;      else
  2827. ;;              Dialog
  2828. ;;                 Your credit card will be charged.
  2829. ;;              EndDialog
  2830. ;;      Endif
  2831.  
  2832. EndProcedure
  2833. Procedure CreditVer
  2834.  
  2835. DialogBox @xy(100,100) 100 150 UseHeader "Credit Verification" Returns [Credit_Rc]
  2836.   Font "MS Sans Serif" 8
  2837.         LText @xy(8,10) 90 80 "Your credit card is about to be charged for [Infobase_Title]. Once online registration is successful, the final price will be displayed, and installation will proceed." 
  2838.         LText @xy(8,50) 90 80 "Are you sure you wish to proceed?"
  2839.   PushButton @xy(20,95) 50 15 "OK" 200 
  2840.   PushButton @xy(20,95) 50 15 "Cancel" 300 
  2841. EndDialogBox
  2842.  
  2843.  
  2844.  
  2845. EndProcedure
  2846. Procedure OnLine_Check
  2847. ;;Exit DismissDialog  ;; test line
  2848. If AccessCodeIsValid [Str2]
  2849.  
  2850. ;;   [RC4Key1] := [Str2]
  2851.    
  2852.    [RC4Key1] := AccessCode [Str2]
  2853.  
  2854.    Exit DismissDialog
  2855. EndIf
  2856.  
  2857. Beep
  2858. Beep
  2859.  
  2860. EndProcedure
  2861. Procedure SendData
  2862.  
  2863.  
  2864. :SendData_Init
  2865. SetMouseCursor Wait
  2866.  
  2867. UnLoadBitMap 13
  2868. ClearScreen
  2869. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  2870. ShowBitMap 13 @xy(Center,Center)
  2871. TextOut OnBitMap 13 @xy(60,17) Checking Modem Configuration ...
  2872.  
  2873. UpdateWindow
  2874.  
  2875. [LdError] := 0
  2876.  
  2877. :Init_Dll
  2878. [LdError] := 0
  2879. [String1] := ShadowDirectory
  2880. If FileIsInUse [String1]\ZClient.Dll 
  2881.  
  2882.    If [LdError] < 5
  2883.       IncrementNumber [LdError]
  2884.       LoadDll [Dll1] ShadowDirectory\ZClient.Dll 
  2885.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  2886.       UnLoadDll [Dll1]
  2887.       UnLoadDll [Dll1]
  2888.       Goto Init_Dll
  2889.    EndIf
  2890.  
  2891.    [Err_Desc] := 'Communications DLL init Failure'
  2892.    [Err_Text] := The communications DLL has failed to init properly. You select 'Re-Try' or reboot your system to clear this condition.
  2893.    do ErrorMsg
  2894.    
  2895.       If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  2896.          Exit
  2897.       EndIf
  2898.       If [Dialog_Rc] = 200
  2899.          LoadDll [Dll1] ShadowDirectory\ZClient.Dll 
  2900.          CallDll [Dll1] Terminate() Returns short [Call_Rc]
  2901.          UnLoadDll [Dll1]
  2902.        UnLoadDll [Dll1]
  2903.          Goto SendData_Init
  2904.       EndIf
  2905.  
  2906. EndIf
  2907.  
  2908. LoadDll [Dll1] ShadowDirectory\ZClient.Dll 
  2909. If DllError <> 0
  2910.    UnLoadBitMap 13
  2911.    ClearScreen
  2912.    [Err_Desc] := 'Communications DLL load Failure'
  2913.    [Err_Text] := The communications DLL has failed to load properly. You select 'Re-Try' or reboot your system to clear this condition.
  2914.    do ErrorMsg
  2915.    
  2916.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  2917.       Exit
  2918.    EndIf
  2919.    If [Dialog_Rc] = 200
  2920.       Goto SendData_Init
  2921.    EndIf
  2922. EndIf
  2923.  
  2924. CallDll [Dll1] AutoDetectPort () Returns short [Call_Rc]
  2925. If [Call_Rc] <> 0
  2926.    UnLoadDll [Dll1]  
  2927.    UnLoadBitMap 13
  2928.    [String1] := 'Error initializing communications. ([Call_Rc])'
  2929.    [Err_Desc] := [String1]
  2930.    [Err_Text] := Make sure that your modem, phone line, and cable are properly connected. Verify that your modem has been reset before attempting 'ReTry'.
  2931.    do ErrorMsg
  2932.    
  2933.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  2934.       Exit
  2935.    EndIf
  2936.    If [Dialog_Rc] = 200
  2937.       Goto SendData_Init
  2938.    EndIf
  2939. EndIf
  2940.  
  2941. UnLoadBitMap 13
  2942. ;;ClearScreen
  2943. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  2944. ShowBitMap 13 @xy(Center,Center)
  2945. TextOut OnBitMap 13 @xy(60,17) Dialing the LEXIS-NEXIS
  2946. TextOut OnBitMap 13 @xy(60,33) Online Registration Service ...
  2947. UpdateWindow
  2948.  
  2949. CallDll [Dll1] DialNumber ([Dial_Number]) Returns short [Call_Rc]
  2950. If [Call_Rc] = -101
  2951.    UnLoadDll [Dll1]  
  2952.    UnLoadBitMap 13
  2953.    ClearScreen
  2954.    Do LineBusy
  2955.    If [Dialog_Rc] = 300
  2956.       Exit
  2957.    EndIf
  2958.    Goto SendData_Init
  2959. EndIf
  2960.  
  2961. If [Call_Rc] <> 0
  2962.    [Err_Desc] := 'Error while dialing number.([Call_Rc])'
  2963.    [Err_Text] := Unable to connect to the LEXIS-NEXIS Online Registration Service. Please make sure that your modem is configured properly and able to connect to an outside phone line.
  2964.    CallDll [Dll1] Terminate() Returns short [Call_Rc]
  2965.    UnLoadDll [Dll1]  
  2966.    UnLoadBitMap 13
  2967.    do ErrorMsg
  2968.    
  2969.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  2970.       Exit
  2971.    EndIf
  2972.    If [Dialog_Rc] = 200
  2973.       Goto SendData_Init
  2974.    EndIf
  2975. EndIf
  2976.  
  2977. UnLoadBitMap 13
  2978. ClearScreen
  2979. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  2980. ShowBitMap 13 @xy(Center,Center)
  2981. TextOut OnBitMap 13 @xy(60,17) Signing on to LEXIS-NEXIS
  2982. TextOut OnBitMap 13 @xy(60,33) Online Registration Service ...
  2983. UpdateWindow
  2984.  
  2985. [String1] := Lexis Nexis
  2986. CallDll [Dll1] LoginSequence ([String1]) Returns short [Call_Rc]
  2987.  
  2988. If [Call_Rc] <> 0
  2989.    [Err_Desc] := 'Server LoginSequence Error'
  2990.    [Err_Text] := Unable to login to server. Unknown errors while attempting to login.
  2991.    CallDll [Dll1] Terminate() Returns short [Call_Rc]
  2992.    UnLoadDll [Dll1]  
  2993.    do ErrorMsg
  2994.    
  2995.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  2996.       Exit
  2997.    EndIf
  2998.    If [Dialog_Rc] = 200
  2999.       Goto SendData_Init
  3000.    EndIf
  3001. EndIf
  3002.  
  3003. [String1] := R   ;; Payware=R ;; EEF=E
  3004. CallDll [Dll1] StartMenuSequence ([String1]) Returns short [Call_Rc]
  3005.  
  3006. If [Call_Rc] <> 0
  3007.    [Err_Desc] := 'Server StartMenuSequence Error'
  3008.    [Err_Text] := Unable to start server menu. Unknown errors occurred while starting a transaction.
  3009.    CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3010.    UnLoadDll [Dll1]  
  3011.    do ErrorMsg
  3012.    
  3013.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3014.       Exit
  3015.    EndIf
  3016.    If [Dialog_Rc] = 200
  3017.       Goto SendData_Init
  3018.    EndIf
  3019. EndIf
  3020.  
  3021. ;; Load Senddata
  3022.  
  3023. SetTokenDelimiterTo ,
  3024. [S_Count] := 0
  3025. [S_Text]  := BlankString
  3026.  
  3027. UnLoadBitMap 13
  3028. ClearScreen
  3029. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  3030. ShowBitMap 13 @xy(Center,Center)
  3031. TextOut OnBitMap 13 @xy(60,25) Processing Online Registration Form ...
  3032. UpdateWindow
  3033.  
  3034. ClearArray [Array1]
  3035. [Array1] := [WindowsDirectory]\LNForms.Dat
  3036.  
  3037. ;;GetMenuChoice
  3038. ;;[Array1]
  3039. ;;EndGetMenuChoice
  3040.  
  3041. [Number1] := 0
  3042. [Number2] := LastIndexUsedFor [Array1]
  3043. [S_Count] := 0
  3044. SetTokenDelimiterTo =
  3045. ExamineTextFile [WindowsDirectory]\LNForms.Dat
  3046. [S_Text]  := BlankString
  3047. [Ts_Text] := Go!!
  3048.  
  3049. [Dialog_Rc] := 0
  3050.  
  3051. While [TS_text] <> BlankString
  3052.   IncrementNumber [S_Count]
  3053.   [TS_text] := Token 1 Of [Array1][[S_Count]]
  3054.   [String1] := Token 2 Of [Array1][[S_Count]]
  3055.  
  3056.   If [TS_text] = BlankString
  3057.      [S_Text] := ""<END>""
  3058.     Else
  3059.      [String2] := SettingFor [TS_text]
  3060.      [S_Text]  := ""[String2]""
  3061.   EndIf
  3062.  
  3063.   :SendData_Retry
  3064.   CallDll [Dll1] SendString ([S_Text]) Returns short [Call_Rc]
  3065.   If [Call_Rc] <> 0
  3066.      [Err_Desc] := 'SendString Error'
  3067.      [Err_Text] := An error occurred while sending data to the server.
  3068.      CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3069.      UnLoadDll [Dll1]  
  3070.      UnLoadBitMap 13
  3071.      do ErrorMsg
  3072.      
  3073.      If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3074.         Exit
  3075.      EndIf
  3076.      If [Dialog_Rc] = 200 
  3077.         Goto SendData_Init
  3078.      EndIf
  3079.   EndIf
  3080.  
  3081. EndWhile 
  3082.  
  3083. UnLoadBitMap 13
  3084. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  3085. ShowBitMap 13 @xy(Center,Center)
  3086. TextOut OnBitMap 13 @xy(60,25) Processing Credit Card ...
  3087.  
  3088. ;; Execute (S1) option code if enabled, no download required
  3089. ;; normal installation
  3090. ;; -------------------------------
  3091. ;;
  3092. If [Call_Rc] = 0 .And. [Reg_Media] <> D
  3093.  
  3094.    :GetKey 
  3095.    ;; Set instance code information and GetKey
  3096.    ;; 
  3097. ;;   [String1] := [Product_ID][Product_File]
  3098. ;;   SetProductClassTo "[String1]"  ;; required
  3099.  
  3100.    SetProductClassTo "SUPER PROGRAM II"  ;; required
  3101.    [String2]  := InstanceCode
  3102.    [S_Text]   := ""[String2]"" 
  3103.    ;; pad marker  "123456789012"
  3104.    [String1]  := ""            "" 
  3105.    [String30] := BlankString
  3106.  
  3107.    CallDll [Dll1] GetKey ([S_Text],[String1]) Returns short [Call_Rc]
  3108.  
  3109.    If [Call_Rc] <> 0
  3110.       [Err_Desc] := 'Access Code Error ([Call_Rc])'
  3111.       [Err_Text] := Error occurred while retrieving an access code from the server.
  3112.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3113.       UnLoadDll [Dll1]  
  3114.       UnLoadBitMap 13
  3115.       do ErrorMsg
  3116.       
  3117.       If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3118.          Exit
  3119.       EndIf
  3120.       If [Dialog_Rc] = 200 
  3121.          Goto SendData_Init
  3122.       EndIf
  3123.    EndIf 
  3124.  
  3125.    If AccessCodeIsValid [String1]
  3126.       [RC4Key1] := AccessCode [String1]
  3127.      Else
  3128.       [Err_Desc] := 'Invalid Access Code Error'
  3129.       [Err_Text] := The access code [String1], as returned from the server is not a valid key.
  3130.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3131.       UnLoadDll [Dll1]  
  3132.       UnLoadBitMap 13
  3133.       do ErrorMsg
  3134.       
  3135.       If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3136.          Exit
  3137.       EndIf
  3138.       If [Dialog_Rc] = 200 
  3139.          Goto SendData_Init
  3140.       EndIf
  3141.  
  3142.    EndIf
  3143.  
  3144.    ;; New price request handling code
  3145. ;; Start here
  3146. [Parse_Str] := [Price]
  3147. [Parse_Char] := "."
  3148. Do Parse
  3149.  
  3150. [String30] := [Parse_Tokens][1]
  3151. [String31] := [Parse_Tokens][2]
  3152. [Number32] := [String30][String31]
  3153. ;;PopUp [Number32]
  3154.  
  3155.    ;; Get price request and process credit card 
  3156.    ;;
  3157.    [S_Text] := ""<PR>""
  3158.                ;;123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+
  3159.    [String1] := "    "
  3160.    [String2] := "                                                                                "
  3161.    CallDll [Dll1] PriceRequest([String1],[String2],[Number32] As Short) Returns Short [Call_Rc]
  3162.  
  3163.    ;;[Call_Rc] := 1   ;; TestLine
  3164.  
  3165.    ;;[String1] = 13 msg, continue
  3166.    ;;          = 14 msg, cancel
  3167.  
  3168. ;; New price request handling code
  3169. ;; End here 
  3170.  
  3171.    Do Price_Check
  3172.  
  3173.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3174.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3175.        UnLoadDll [Dll1]  
  3176.        UnLoadBitMap 13
  3177.        do ErrorMsg
  3178.        Exit
  3179.     EndIf
  3180.     If [Dialog_Rc] = 200 
  3181.        Goto SendData_Init
  3182.     EndIf
  3183.  
  3184.    CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3185.    UnLoadDll [Dll1]
  3186.    ClearScreen
  3187.    UnLoadBitMap 13
  3188.    Do FinalPrice
  3189.  
  3190. EndIf
  3191.  
  3192. ;; Execute download (S4) option code if enabled
  3193. ;; -------------------------------
  3194. If [Reg_Media] = D
  3195.  
  3196.    :DownLoad_Retry
  3197.    ;; File will be placed into [InstallFromDirectory] location
  3198.    ;;
  3199.    [C_Dir] := [InstallFromDirectory]      
  3200.    [T_Dir] := [InstallationDirectory]
  3201.    CreateDirectoryIfNecessary [T_Dir]
  3202.    
  3203.    [Number1] := MainWindowHandle
  3204.    UnLoadBitMap 13
  3205.  
  3206.    CallDll [Dll1] DownLoadFile ([Number1] As Short,[T_Dir]) Returns short [Call_Rc]
  3207.  
  3208.    If [Call_Rc] <> 0
  3209.       [Err_Desc] := 'File Download Error ([Call_Rc])'
  3210.       [Err_Text] := Error during file download.
  3211.  
  3212.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3213.       UnLoadDll [Dll1]  
  3214.       UnLoadBitMap 13
  3215.       do ErrorMsg
  3216.       
  3217.       If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3218.          Exit
  3219.       EndIf
  3220.       If [Dialog_Rc] = 200 
  3221.          Goto SendData_Init
  3222.       EndIf
  3223.    EndIf 
  3224.  
  3225.    ;; needed for download only
  3226.    CallDLL [DLL1] ClearBuffers()
  3227.  
  3228.    ModifyTextFile [WindowsDirectory]\LNForms.Dat NoBackUp
  3229.       AddOrChangeLineWith (DownLoad=,,) As "DownLoad=Y" At End
  3230.    EndModifyTextFile
  3231.  
  3232.    :S4_GetKey 
  3233.    ;; Set instance code information and GetKey
  3234.    ;; 
  3235. ;;   [String1] := [Product_ID][Product_File]
  3236. ;;   SetProductClassTo "[String1]"  ;; required
  3237.  
  3238.    SetProductClassTo "SUPER PROGRAM II"  ;; required
  3239.    [String2]  := InstanceCode
  3240.    [S_Text]   := ""[String2]"" 
  3241.    ;; pad marker  "123456789012"
  3242.    [String1]  := ""            "" 
  3243.  
  3244.    [String30] := "D"
  3245.    Delay 1000   
  3246.    CallDll [Dll1] GetKey ([S_Text],[String1]) Returns short [Call_Rc]
  3247.  
  3248.    If [Call_Rc] <> 0
  3249.       [Err_Desc] := 'Access Code Error ([Call_Rc])'
  3250.       [Err_Text] := Error occurred while retrieving an access code from the server.
  3251.  
  3252.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3253.       UnLoadDll [Dll1]  
  3254.       UnLoadBitMap 13
  3255.       do ErrorMsg
  3256.       
  3257.       If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3258.          Exit
  3259.       EndIf
  3260.       If [Dialog_Rc] = 200 
  3261.          Goto SendData_Init
  3262.       EndIf
  3263.    EndIf 
  3264.  
  3265.    If AccessCodeIsValid [String1]
  3266.       [RC4Key1] := AccessCode [String1]
  3267.      Else
  3268.       [Err_Desc] := 'Invalid Access Code Error ([Call_Rc])'
  3269.       [Err_Text] := The access code [String1], as returned from the server is not a valid key.
  3270.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3271.       UnLoadDll [Dll1]  
  3272.       UnLoadBitMap 13
  3273.       do ErrorMsg
  3274.       
  3275.       If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3276.          Exit
  3277.       EndIf
  3278.       If [Dialog_Rc] = 200 
  3279.          Goto SendData_Init
  3280.       EndIf
  3281.    EndIf
  3282.  
  3283.    ;; New price request handling code
  3284. ;; Start here
  3285. [Parse_Str] := [Price]
  3286. [Parse_Char] := "."
  3287. Do Parse
  3288.  
  3289. [String30] := [Parse_Tokens][1]
  3290. [String31] := [Parse_Tokens][2]
  3291. [Number32] := [String30][String31]
  3292. ;;PopUp [Number32]
  3293.  
  3294.    ;; Get price request and process credit card 
  3295.    ;;
  3296.    [S_Text] := ""<PR>""
  3297.                ;;123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+
  3298.    [String1] := "    "
  3299.    [String2] := "                                                                                "
  3300.    CallDll [Dll1] PriceRequest([String1],[String2],[Number32] As Short) Returns Short [Call_Rc]
  3301.  
  3302.    ;;[Call_Rc] := 1   ;; TestLine
  3303.  
  3304.    ;;[String1] = 13 msg, continue
  3305.    ;;          = 14 msg, cancel
  3306.  
  3307. ;; New price request handling code
  3308. ;; End here 
  3309.  
  3310.    Do Price_Check
  3311.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3312.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3313.        UnLoadDll [Dll1]  
  3314.        UnLoadBitMap 13
  3315.        do ErrorMsg
  3316.        Exit
  3317.     EndIf
  3318.     If [Dialog_Rc] = 200 
  3319.        Goto S4_GetKey
  3320.     EndIf
  3321.  
  3322.    CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3323.    UnLoadDll [Dll1]
  3324.  
  3325.    ClearScreen
  3326.    UnLoadBitMap 13
  3327.    Do FinalPrice
  3328.  
  3329.    [InstallFromDirectory] := [T_Dir]
  3330.    InstallSeries [Product_File].PVL
  3331.  
  3332. EndIf
  3333.  
  3334. UnLoadBitMap 13
  3335. ClearScreen
  3336.  
  3337. SetMouseCursor Arrow
  3338. goto FullIns
  3339. exit
  3340.  
  3341. EndProcedure
  3342.  
  3343.  
  3344. Procedure ErrorMsg
  3345.  
  3346. DialogBox RegScreen @xy(CenterScreen,CenterScreen) 160 130 Returns [Dialog_Rc] BlackOnWhite UseHeader "Installation Error" 
  3347.   Font "MS Sans Serif" 8
  3348.   LText @xy(5,6) 150 20 "The Automated Installation of [Infobase_Title] was unsuccessful:"
  3349.   LText @xy(9,30) 5 10 "╖"
  3350.   LText @xy(20,30) 140 20 "Press 'Retry' to restart the Automated Installation."
  3351.   LText @xy(9,50) 5 10 "╖"
  3352.   LText @xy(20,50) 140 20 "Press 'Next' to continue with a manual installation."
  3353.   LText @xy(9,70) 5 10 "╖"
  3354.   LText @xy(20,70) 140 20 "Press 'Cancel' to discontinue."
  3355.   PushButton @xy(8,105) 45 15 "Retry"  200
  3356.   PushButton @xy(57,105) 45 15 "Next >" 300 
  3357.   PushButton C_Button ProcIs ExitConfirm @xy(106,105) 45 15 "Cancel" 100
  3358. EndDialogBox
  3359.  
  3360. if [Dialog_Rc] = 100
  3361.    SoLong Quietly
  3362. EndIf
  3363.  
  3364. EndProcedure
  3365.  
  3366.  
  3367. Procedure CharFilter
  3368.  
  3369. [String1] := [Reg_LnId]      
  3370. [Reg_LnId] := SubStringOf [String1] From 1 To 50
  3371.  
  3372. [String1] := [Reg_FName]       
  3373. [Reg_FName]  := SubStringOf [String1] From 1 To 50
  3374.  
  3375. [String1] := [Reg_LName]      
  3376. [Reg_LName] := SubStringOf [String1] From 1 To 50
  3377.  
  3378. [String1] := [Reg_MName]     
  3379. [Reg_MName] := SubStringOf [String1] From 1 To 2
  3380.  
  3381. [String1] := [Reg_Addr1]      
  3382. [Reg_Addr1]  := SubStringOf [String1] From 1 To 50
  3383.  
  3384. [String1] := [Reg_Addr2]     
  3385. [Reg_Addr2] := SubStringOf [String1] From 1 To 50
  3386.  
  3387. [String1] := [Reg_City]     
  3388. [Reg_City] := SubStringOf [String1] From 1 To 50
  3389.  
  3390. [String1] := [Reg_State]    
  3391. [Reg_State] := SubStringOf [String1] From 1 To 2
  3392.  
  3393. [String1] := [Reg_Zip]    
  3394. [Reg_Zip] := SubStringOf [String1] From 1 To 5
  3395.  
  3396. [String1] := [Reg_Phone]    
  3397. [Reg_Phone] := SubStringOf [String1] From 1 To 16
  3398.  
  3399. [String1] := [RegH_Addr1]   
  3400. [RegH_Addr1] := SubStringOf [String1] From 1 To 50
  3401.  
  3402. [String1] := [RegH_Addr2]    
  3403. [RegH_Addr2] := SubStringOf [String1] From 1 To 50
  3404.  
  3405. [String1] := [RegH_City]    
  3406. [RegH_City] := SubStringOf [String1] From 1 To 50
  3407.  
  3408. [String1] := [RegH_State]    
  3409. [RegH_State] := SubStringOf [String1] From 1 To 2
  3410.  
  3411. [String1] := [RegH_Zip]   
  3412. [RegH_Zip] := SubStringOf [String1] From 1 To 5
  3413.  
  3414. [String1] := [RegH_Phone]   
  3415. [RegH_Phone] := SubStringOf [String1] From 1 To 16
  3416.  
  3417. [String1] := [Reg_SchoolId]   
  3418. [Reg_SchoolId] := SubStringOf [String1] From 1 To 3
  3419.  
  3420. [String1] := [Reg_GradYear]   
  3421. [Reg_GradYear] := SubStringOf [String1] From 1 To 4
  3422.  
  3423. [String1] := [Reg_Member]   
  3424. [Reg_Member] := SubStringOf [String1] From 1 To 1
  3425.  
  3426. [String1] := [Reg_CBLawReviewYn]   
  3427. [Reg_CBLawReviewYn] := SubStringOf [String1] From 1 To 1
  3428.  
  3429. [String1] := [Reg_CBLawReview1Yn]   
  3430. [Reg_CBLawReview1Yn] := SubStringOf [String1] From 1 To 1
  3431.  
  3432. [String1] := [Reg_EMail]  
  3433. [Reg_EMail] := SubStringOf [String1] From 1 To 80
  3434.  
  3435. [String1] := [Reg_Media]   
  3436. [Reg_Media] := SubStringOf [String1] From 1 To 1
  3437.  
  3438. [String1] := [Reg_InstallOS]  
  3439. [Reg_InstallOS] := SubStringOf [String1] From 1 To 3
  3440.  
  3441. [String1] := [Version_Number]  
  3442. [Version_Number] := SubStringOf [String1] From 1 To 3
  3443.  
  3444. [String1] := [Product_Id]
  3445. [Product_Id] := SubStringOf [String1] From 1 To 20
  3446.  
  3447. [String1] := [Reg_CCNo] 
  3448. [Reg_CCNo] := SubStringOf [String1] From 1 To 50
  3449.  
  3450. [String1] := [Reg_ExpDate] 
  3451. [Reg_ExpDate]  := SubStringOf [String1] From 1 To 5
  3452.  
  3453.  
  3454. EndProcedure
  3455. Procedure DialPreFix
  3456. UpdateWindow
  3457.  
  3458. ;; if [Dial_Prefix]  BlankString
  3459. ;; [String1] := [Dial_Number]
  3460.  
  3461. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Dial Prefix" 
  3462.       Font "MS Sans Serif" 8
  3463.       BitMap @xy(8,8) BitMap 14
  3464.       
  3465.       PushButton @xy(180,145) 45 15 "Next >" 200
  3466.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  3467.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  3468.       Static @xy(8,140) 269 1 "" BlackRect
  3469.       LText @xy(84,7) 189 40 "You are about to dial into the LEXIS-NEXIS Online Registration Service. This is a TOLL FREE call! If your phone requires a dial prefix in order to reach an outside line, please enter it now."
  3470.       LText @xy(84,71) 50 10 "Dial Prefix:"
  3471.       EditText @xy(130,70) 50 12 Uses [Dial_Prefix] AutoHScroll Border
  3472. EndDialogBox
  3473.  
  3474. [String1] := [Dial_Prefix]
  3475. [String2] := [Orig_Dial_Number]
  3476. [Dial_Number] := [String1][String2]
  3477.  
  3478. If [Dialog_Rc] = 300
  3479.    SoLong Quietly
  3480. EndIf
  3481.  
  3482. EndProcedure
  3483. Procedure FinalPrice
  3484. ;;## Chg final price text for 0.00 stuff
  3485. ;;
  3486.  
  3487. If [Price_Return] > 0
  3488.    [Price_Total] := FormatNumber [Price_Return] Decimal
  3489.    [Price_Desc] := "Credit card number [Reg_CCNo] has been charged a total price of $[Price_Total]."
  3490. EndIf
  3491.  
  3492. If [Price_Return] = 0
  3493.    [Price_Desc] := "Your credit card has not been charged for this transaction."
  3494. EndIf
  3495.  
  3496. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Total Price" 
  3497.       Font "MS Sans Serif" 8
  3498.       BitMap @xy(8,8) BitMap 14
  3499.       
  3500.       PushButton @xy(180,145) 45 15 "Next >" 200
  3501.       PushButton @xy(135,145) 45 15 "< &Back" 100 Disabled
  3502.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300 Disabled
  3503.       Static @xy(8,140) 269 1 "" BlackRect
  3504.       LText @xy(84,7) 189 40 "[Price_Desc]"
  3505.  
  3506.       LText @xy(84,70) 190 30 "Click 'Next' to install your purchased product."
  3507. EndDialogBox
  3508.  
  3509. If [Dialog_Rc] = 300
  3510.    SoLong Quietly
  3511. EndIf
  3512.  
  3513. EndProcedure
  3514. Procedure PB_ExitOn
  3515. EnableWindow RegScreen.Back On
  3516.                 EnableWindow RegScreen.RegCheck On
  3517.                 EnableWindow RegScreen.C_Button On
  3518.                 EnableWindow RegScreen.Pb_HomeAddr On
  3519. EndProcedure
  3520. Procedure NoProducts
  3521. :NoProd_test
  3522. SetTokenDelimiterTo ,
  3523. [Reg_Media] := D
  3524. [String11] := Invalid Product Id - ([Product_File])
  3525.  
  3526. [String10] := BlankString
  3527. [String1] := The PVL file for this installation does not contain an NFO base, or the specified product as specified via -P: is invalid. To install an NFO base product you must do so by selecting from the product list below, or via the command line using -P:{filename_below_with_no_file_extension}.
  3528. [Array2] := FileListFromLibrary *.IDD
  3529.  
  3530. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "[String11]"  ;;F:\VR\SCRIPTS\PROGROUP.DBB
  3531.       Font "MS Sans Serif" 8
  3532.       Static @xy(8,140) 269 1 "" BlackRect
  3533.       PushButton @xy(180,145) 45 15 "Next >" 200 
  3534.       PushButton @xy(136,145) 45 15 "< &Back" 100 Disabled
  3535.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  3536.       
  3537.       LText @xy(84,7) 189 70 "[String1]"
  3538.       LText @xy(84,52) 59 12 "Catalog List:"
  3539.    ComboBox @xy(84,62) 191 70 Uses [String10] LoadWith [Array2] Border Sort
  3540. EndDialogBox
  3541.  
  3542. If [Dialog_Rc] = 300
  3543.    SoLong Quietly
  3544. EndIf
  3545.  
  3546. If [Dialog_Rc] = 200
  3547.    If [String10] = BlankString
  3548.       Goto NoProd_test
  3549.    EndIf       
  3550.    [Cat_Select] := BlankString
  3551.    [String1] := [String10]
  3552. EndIf
  3553.  
  3554. EndProcedure
  3555. Procedure HAddr_Check
  3556. ClearArray [RegUser_Data]
  3557. [RegUser_Count] := 0
  3558. [BStr_Count]  := 0
  3559.  
  3560. ;; ----------------------------------
  3561. ;; Verify address information
  3562. ;;
  3563. :Verify_HAddr1
  3564. If [TRegH_Addr1] = BlankString .And. [TRegH_Addr2] = BlankString
  3565.    IncrementNumber [RegUser_Count]
  3566.    [RegUser_Data][[RegUser_Count]] := Home Address (No data entered)
  3567.    IncrementNumber [BStr_Count] 
  3568.    Goto Verify_HCity
  3569. EndIf
  3570. [StrCheck_String] := [TRegH_Addr1][TRegH_Addr2]
  3571. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789-.,"
  3572. [StrCheck_Mask]   := BlankString
  3573. [StrCheck_Rc]     := 0
  3574. Do StrCheck
  3575. If [StrCheck_Rc] > 0
  3576.    IncrementNumber [RegUser_Count]
  3577.    [RegUser_Data][[RegUser_Count]] := Home Address (A-Z,Space,-.,) only!
  3578. EndIf
  3579.  
  3580. ;; ----------------------------------
  3581. ;; Verify City information
  3582. ;;
  3583. :Verify_HCity
  3584. If [TRegH_City] = BlankString
  3585.    IncrementNumber [RegUser_Count]
  3586.    [RegUser_Data][[RegUser_Count]] := City (No data entered)
  3587.    IncrementNumber [BStr_Count]
  3588.    Goto Verify_HState
  3589. EndIf
  3590. [StrCheck_String] := [TRegH_City]
  3591. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ "
  3592. [StrCheck_Mask]   := BlankString
  3593. [StrCheck_Rc]     := 0
  3594. Do StrCheck
  3595. If [StrCheck_Rc] > 0
  3596.    IncrementNumber [RegUser_Count]
  3597.    [RegUser_Data][[RegUser_Count]] := City (A-Z,Space) only!
  3598. EndIf
  3599.  
  3600. ;; ----------------------------------
  3601. ;; Verify State information
  3602. ;;
  3603. :Verify_HState
  3604. If [TRegH_State] = BlankString
  3605.    IncrementNumber [RegUser_Count]
  3606.    [RegUser_Data][[RegUser_Count]] := State (No data entered)
  3607.    IncrementNumber [BStr_Count]
  3608.    Goto Verify_HZip
  3609. EndIf
  3610. [StrCheck_String] := [TRegH_State]
  3611. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  3612. [StrCheck_Mask]   := BlankString
  3613. [StrCheck_Rc]     := 0
  3614. Do StrCheck
  3615. If [StrCheck_Rc] > 0
  3616.    IncrementNumber [RegUser_Count]
  3617.    [RegUser_Data][[RegUser_Count]] := State (A-Z) only!
  3618. EndIf
  3619.  
  3620. ;; ----------------------------------
  3621. ;; Verify Zip information
  3622. ;;
  3623. :Verify_HZip
  3624. [NUmber29] := LengthOf [TRegH_Zip]
  3625. If [NUmber29] = 0
  3626.    IncrementNumber [BStr_Count]
  3627. EndIf
  3628. If [NUmber29] <> 5
  3629.    IncrementNumber [RegUser_Count]
  3630.    [RegUser_Data][[RegUser_Count]] := Zip Code (0-9,-) only! Must be 5 digits.
  3631.    Goto Verify_HPhone
  3632. EndIf
  3633. [StrCheck_String] := [TRegH_Zip]
  3634. [StrCheck_Valid]  := "0123456789-"
  3635. [StrCheck_Mask]   := BlankString
  3636. [StrCheck_Rc]     := 0
  3637. Do StrCheck
  3638. If [StrCheck_Rc] > 0
  3639.    IncrementNumber [RegUser_Count]
  3640.    [RegUser_Data][[RegUser_Count]] := Zip Code (0-9,-) only! Must be 5 digits.
  3641. EndIf
  3642.  
  3643. ;; ----------------------------------
  3644. ;; Verify Phone information
  3645. ;;
  3646. :Verify_HPhone
  3647. If [TRegH_Phone] = BlankString
  3648.    IncrementNumber [BStr_Count]
  3649. EndIf
  3650. [StrCheck_String] := [TRegH_Phone]
  3651. [StrCheck_Valid]  := "0123456789-() "
  3652. [StrCheck_Mask]   := BlankString
  3653. [StrCheck_Rc]     := 0
  3654. Do StrCheck
  3655. If [StrCheck_Rc] > 0
  3656.    IncrementNumber [RegUser_Count]
  3657.    [RegUser_Data][[RegUser_Count]] := Phone (0-9,(,),-,Space) only!
  3658. EndIf
  3659.  
  3660. :HAddr_End
  3661. If [BStr_Count] = 5
  3662.    Exit DismissDialog 
  3663. EndIf
  3664.  
  3665. [RegUser_Idx] := LastIndexUsedFor [RegUser_Data]
  3666.  
  3667. ClearScreen
  3668.  
  3669. If [RegUser_Idx] > 0
  3670.  
  3671.    ClearArray [Array1]
  3672.    Beep
  3673.    Beep 
  3674.    UpDateWindow
  3675.    DialogBox  @xy(Center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "Permanent Address has missing or invalid data"  ;;F:\VR\SCRIPTS\INSTTYPE.DBB
  3676.       Font "MS Sans Serif" 8
  3677.       Bitmap @xy(8,7) Bitmap 14
  3678.       LText @xy(84,7) 181 30 "One or more required fields have missing or invalid data. Please refer to the list below and make the necessary corrections."
  3679.       LText @xy(84,45) 181 23 "The following fields have missing or invalid data."
  3680.       ListBox @xy(84,55) 160 80 Uses [String28] LoadWith [RegUser_Data]
  3681.       
  3682.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  3683.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  3684.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  3685.       Static @xy(8,140) 269 1 "" BlackRect
  3686.    EndDialogBox
  3687.  
  3688.    If [Dialog_rc] = 300
  3689.       SoLong Quietly
  3690.    EndIf
  3691.  
  3692.    [Field_Error] := True
  3693.   ;; Do Pb_ExitOn
  3694.  
  3695.    Exit
  3696. EndIf
  3697.  
  3698. Exit DismissDialog 
  3699.  
  3700.  
  3701.  
  3702. EndProcedure
  3703. Procedure LineBusy
  3704. SetMouseCursor Wait
  3705. DialogBox RegScreen @xy(CenterScreen,CenterScreen) 160 130 Returns [Dialog_Rc] BlackOnWhite UseHeader "Line Busy" Delay 20000
  3706.    Font "MS Sans Serif" 8
  3707.    LText @xy(12,6) 150 40 "The line is currently busy. An attempt to re-connect will be made every 20 seconds. Select 'Cancel' to abort re-dial."
  3708.    PushButton @xy(93,110) 50 12 "Cancel" 300 
  3709. EndDialogBox
  3710.  
  3711. SetMouseCursor Arrow
  3712.  
  3713.  
  3714. EndProcedure
  3715. Procedure ReStart
  3716. ;;If .Not. FileExists [Rest_IDir]\[Rest_Prod].PVL
  3717. ;;   Exit
  3718. ;;EndIf
  3719. ;;
  3720. ;;[Number25] := RGB(0,0,0)           ;;custom foreground color
  3721. ;;[Number26] := RGB(192,192,192)     ;;custom background color
  3722. ;;
  3723. ;;   DialogBox Restart @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "Restart Using Existing Product Library - (*.PVL)"  
  3724. ;;      Font "MS Sans Serif" 8
  3725. ;;      Bitmap @xy(8,7) Bitmap 14
  3726. ;;      LText @xy(84,7)  181 40 "The previous installation was unsucessfull, but the selected product file was sucessfully downloaded. Please select one of the following functions"
  3727. ;;      
  3728. ;;      PushButton @xy(180,145) 45 15 "Next >" 200
  3729. ;;      PushButton @xy(135,145) 45 15 "< &Back" 100 Disabled
  3730. ;;      PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  3731. ;;      Static @xy(8,140) 269 1 "" BlackRect
  3732. ;;
  3733. ;;      LText @xy(84,62)  181 40 ""
  3734. ;;
  3735. ;;      RadioButtonGroup Uses [Restart_Type]
  3736. ;;         RadioButton @xy(84,52) 150 8 "Install using previously downloaded product file" 
  3737. ;;         RadioButton @xy(84,82) 150 8 "Download new product file."
  3738. ;;   EndDialogBox
  3739. ;;
  3740. ;;If [Dialog_Rc] = 300
  3741. ;;   SoLong Quietly
  3742. ;;EndIf
  3743.  
  3744. EndProcedure
  3745. Procedure ExitConFirm
  3746. If CompletionStatus <> Finished
  3747. [Number25] := RGB(0,0,0)           ;;custom foreground color
  3748. [Number26] := RGB(192,192,192)     ;;custom background color
  3749.  ClearScreen
  3750.  
  3751.    If FileExists [InstallFromDirectory]\tool.bmp
  3752.       LoadBitMap 14 [InstallFromDirectory]\tool.bmp
  3753.  
  3754.     DialogBox ExitProcDialog @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "Exit Confirmation"
  3755.       Font "MS Sans Serif" 8
  3756.       Bitmap @xy(8,7) Bitmap 14
  3757.       LText @xy(81,7)  191 50 "You have chosen to exit the LEXIS-NEXIS installation program. The title you have chosen has NOT been installed successfully. Please re-run the install program to install the selected title."
  3758.       
  3759.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  3760.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  3761.       PushButton @xy(232,145) 45 15 "Exit" 300
  3762.       Static @xy(8,140) 269 1 "" BlackRect
  3763.     EndDialogBox
  3764.    else
  3765.     DialogBox ExitProcDialog @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "Exit Confirmation"
  3766.       Font "MS Sans Serif" 8
  3767.       LText @xy(81,7)  191 50 "You have chosen to exit the LEXIS-NEXIS installation program. The title you have chosen has NOT been installed successfully. Please re-run the install program to install the selected title."
  3768.       
  3769.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  3770.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  3771.       PushButton @xy(232,145) 45 15 "Exit" 300
  3772.       Static @xy(8,140) 269 1 "" BlackRect
  3773.      EndDialogBox
  3774.    EndIf
  3775.  
  3776.    If [Dialog_Rc] = 300
  3777.       Solong Quietly
  3778.    EndIf
  3779.  
  3780.    Exit
  3781.  
  3782. EndIf
  3783.  
  3784. EndProcedure
  3785.  
  3786. Procedure Price_Check
  3787. If [Call_Rc] < 0
  3788.       [Price_Return] := 0
  3789.    Else     
  3790.     [Price_Return] := [Call_Rc]
  3791. EndIf
  3792.  
  3793.    If [Call_Rc] = 1
  3794.       [Err_Desc] := 'Registration Failure ([Call_Rc])'
  3795.       [Err_Text] := The server may be down or busy.
  3796.  
  3797.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3798.        UnLoadDll [Dll1]  
  3799.      UnLoadDll [Dll1]  
  3800.        UnLoadBitMap 13
  3801.        do ErrorMsg
  3802.        Exit
  3803.    EndIf 
  3804.  
  3805.    If [Call_Rc] = 2
  3806.       [Err_Desc] := 'Invalid credit card/exp date ([Call_Rc])'
  3807.       [Err_Text] := The credit card number could not be authorized.
  3808.  
  3809.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3810.        UnLoadDll [Dll1]  
  3811.         UnLoadDll [Dll1]  
  3812.        UnLoadBitMap 13
  3813.       do ErrorMsg
  3814.       Exit
  3815.    EndIf 
  3816.  
  3817.    If [Call_Rc] = 3
  3818.       [Err_Desc] := 'Unable to process credit card ([Call_Rc])'
  3819.       [Err_Text] := The credit card number could not be authorized.
  3820.  
  3821.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3822.        UnLoadDll [Dll1]  
  3823.      UnLoadDll [Dll1]  
  3824.        UnLoadBitMap 13
  3825.       do ErrorMsg
  3826.        Exit
  3827.    EndIf 
  3828.  
  3829.    If [Call_Rc] = 4
  3830.       [Err_Desc] := 'Unable to process credit info ([Call_Rc])'
  3831.       [Err_Text] := Unable to process credit information.
  3832.  
  3833.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3834.        UnLoadDll [Dll1]  
  3835.      UnLoadDll [Dll1]  
  3836.        UnLoadBitMap 13
  3837.       do ErrorMsg
  3838.        Exit
  3839.    EndIf 
  3840.  
  3841.    If [Call_Rc] = 10
  3842.       [Err_Desc] := 'Server database is down or not online ([Call_Rc])'
  3843.       [Err_Text] := The database cannot be accessed at this time.
  3844.  
  3845.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3846.        UnLoadDll [Dll1]  
  3847.       UnLoadDll [Dll1]  
  3848.        UnLoadBitMap 13
  3849.       do ErrorMsg
  3850.        Exit
  3851.    EndIf 
  3852.  
  3853.    If [Call_Rc] = 11
  3854.       [Err_Desc] := 'Credit Card denied (Call_Rc])'
  3855.       [Err_Text] := Credit card is invalid, and cannot be charged.
  3856.  
  3857.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3858.        UnLoadDll [Dll1]  
  3859.      UnLoadDll [Dll1]  
  3860.        UnLoadBitMap 13
  3861.       do ErrorMsg
  3862.        Exit
  3863.    EndIf 
  3864.  
  3865.    If [Call_Rc] = 12
  3866.       [Err_Desc] := 'Invalid ProductId ([Call_Rc])'
  3867.       [Err_Text] := The current productId is invalid.
  3868.  
  3869.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3870.        UnLoadDll [Dll1]  
  3871.       UnLoadDll [Dll1]  
  3872.        UnLoadBitMap 13
  3873.       do ErrorMsg
  3874.        Exit
  3875.    EndIf 
  3876.  
  3877.    ;;[String1] = 13 msg, continue
  3878.    ;;          = 14 msg, cancel
  3879.  
  3880.    [String29] := 13
  3881.    If "[String1]" = "[String29]" 
  3882.  
  3883.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3884.        UnLoadDll [Dll1]  
  3885.      UnLoadDll [Dll1]  
  3886.        UnLoadBitMap 13
  3887.       Do SvrMessage
  3888.    EndIf
  3889.  
  3890.    [String29] := 14
  3891.    If "[String1]" = "[String29]"      
  3892.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3893.        UnLoadDll [Dll1]  
  3894.      UnLoadDll [Dll1]  
  3895.        UnLoadBitMap 13
  3896.       Do NoInstall 
  3897.    EndIf
  3898.  
  3899. EndProcedure
  3900. Procedure NoInstall
  3901.  
  3902.  
  3903. ClearScreen
  3904. :NoInstall_Beg
  3905.  
  3906. [Reg_IAttempt] := C
  3907. ModifyTextFile [WindowsDirectory]\LNForms.Dat NoBackUp Quietly
  3908.  AddOrChangeLineWith (IAttempt=,,) As "IAttempt=[Reg_IAttempt]" At End
  3909. EndModifyTextFile
  3910.  
  3911. [ByeBye_Desc]  := The installation of '[Infobase_Title]' can not continue. See the server message below for more information.
  3912. [ByeBye_Desc1] := "[String2]"
  3913.  
  3914. SetCompletionStatusTo Finished
  3915.  
  3916. DialogBox  @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader " Can not continue Installation "  
  3917.   Font "MS Sans Serif" 8
  3918.   BitMap @xy(8,7) BitMap 14
  3919.   LText @xy(83,7) 190 100 "[ByeBye_Desc]"
  3920.   LText @xy(83,47) 190 70 "[ByeBye_Desc1]"
  3921.   PushButton @xy(230,145) 45 15 "Finish" 200
  3922.   Static @xy(8,140) 269 1 "" BlackRect
  3923. EndDialogBox
  3924.  
  3925. SoLong Quietly
  3926.  
  3927.  
  3928. EndProcedure
  3929. Procedure SvrMessage
  3930. ClearScreen
  3931.  
  3932. [ByeBye_Desc]  := During the installation of '[Infobase_Title]' a message was received from the server. See the server message below for more information.
  3933. [ByeBye_Desc1] := "[String2]"
  3934.  
  3935. SetCompletionStatusTo Finished
  3936.  
  3937. DialogBox  @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader " Installation Note "  
  3938.   Font "MS Sans Serif" 8
  3939.   BitMap @xy(8,7) BitMap 14
  3940.   LText @xy(83,7) 190 100 "[ByeBye_Desc]"
  3941.   LText @xy(83,47) 190 70 "[ByeBye_Desc1]"
  3942.   PushButton @xy(230,145) 45 15 "Continue" 200
  3943.   Static @xy(8,140) 269 1 "" BlackRect
  3944. EndDialogBox
  3945.  
  3946.  
  3947.  
  3948. EndProcedure
  3949. Procedure Product_License
  3950.  
  3951.  
  3952. [Array1] := [InstallFromDirectory]\Offlnse.Txt
  3953.  
  3954. [String1] := BlankString
  3955. [StringS] := Before installing any software that is part of the LEXIS-NEXIS Millennium+ Software Collection you should carefully read the associated terms and conditions (the "Agreement"). Installing any  software from the LEXIS-NEXIS Millennium+ Software Collection indicates your acceptance of these terms and conditions. If you do not agree with them, do not install the software.
  3956.  
  3957. :PreLicense
  3958. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "LEXIS-NEXIS License Agreement"
  3959.       Font "MS Sans Serif" 8
  3960.       BitMap @xy(8,8) BitMap 14
  3961.       LText @xy(82,20) 185 60 "[StringS]"
  3962.       Static @xy(8,140) 269 1 "" BlackRect
  3963.       PushButton @xy(180,145) 45 15 "Next >" 200
  3964.       PushButton C_Button ProcIs ExitConFirm @xy(232,145)  45 15 "Cancel" 300
  3965. EndDialogBox
  3966.  
  3967. If [Dialog_Rc] = 300
  3968.    Do ExitConfirm
  3969. EndIf
  3970.  
  3971. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "LEXIS-NEXIS License Agreement"
  3972.       Font "MS Sans Serif" 8
  3973.       BitMap @xy(8,8) BitMap 14
  3974.       Static @xy(8,140) 269 1 "" BlackRect
  3975.       PushButton @xy(90,145) 70 15 "Accept Terms" 200
  3976.       PushButton C_Button ProcIs ExitConFirm @xy(180,145)  73 15 "Do Not Accept Terms" 300
  3977.       ListBox @xy(82,9) 191 126 Uses [String1] LoadWith [Array1] Border AutoHScroll
  3978. EndDialogBox
  3979.  
  3980. If [Dialog_Rc] = 300
  3981.    Do ExitConfirm
  3982. EndIf
  3983. EndProcedure
  3984.  
  3985. ;;*******************************************************************************************
  3986. ;; HPI
  3987. ;; 600 Boulevard South, Suite 305
  3988. ;; Huntsville Al,  35802
  3989. ;;
  3990. ;; HPI is the solution provider for the installation industry.
  3991. ;;  * * * 
  3992. ;;
  3993. ;;*****************************************************************************************
  3994. ;; Init System variables
  3995. ;;
  3996. [System_StartTime] := SystemTime
  3997. [System_CMDLine]   := [CommandLine0] [CommandLine1] [CommandLine2] [CommandLine3] [CommandLine4] [CommandLine5]
  3998. [System_TempDir]   := ShadowDirectory
  3999.  
  4000. ;; Init vars from Cmdline parameters
  4001. ;;
  4002. ;; -P:Product name
  4003. ;; 
  4004.  
  4005. ;; Init Installation
  4006. ;;
  4007. Do Setup         ;; SetUp Screen Displays and Colors
  4008.  
  4009. ;; Display main dialog
  4010. ;;
  4011.  
  4012. if [Toolbox] = Yes
  4013.   [String9] := Thank you for selecting [Product_Name], a member of the LEXIS-NEXIS Legal Toolbox product suite.
  4014. else
  4015.   [String9] := Thank you for selecting [Product_Name].
  4016. EndIf
  4017.  
  4018.  
  4019. SetMouseCursor Arrow
  4020. :MainMenu
  4021. [Number25] := RGB(0,0,0)           ;;custom foreground color
  4022. [Number26] := RGB(192,192,192)     ;;custom background color
  4023.  
  4024.    DialogBox WelcomeDialog @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "LEXIS-NEXIS Electronic Materials Setup"  ;;F:\VR\SCRIPTS\INSTTYPE.DBB
  4025.       Font "MS Sans Serif" 8
  4026.       Bitmap @xy(8,7) Bitmap 14
  4027.       LText @xy(84,7)  181 50 "[String9]"
  4028.       LText @xy(84,62) 191 12 "The total purchase price is $[Price] + applicable sales tax."
  4029.       LText @xy(84,77) 181 12 "To install this product you will need the following:"
  4030.       LText @xy(84,87) 181 12 " - A hard drive with [KBytes] KB of free space."
  4031.       LText @xy(84,97) 181 12 " - A valid credit card."
  4032.       LText @xy(84,107) 181 12 "   Valid Cards include: Visa, Mastercard," 
  4033.       LText @xy(84,117) 181 12 "   and American Express."
  4034.       LText @xy(84,127) 181 12 " - A connected modem (minimum 4800 baud)."
  4035.       LText @xy(8,145) 80 10 "⌐ 1996 LEXIS-NEXIS,"
  4036.       LText @xy(14,153) 130 10 "a division of Reed Elsevier Inc."
  4037.       PushButton @xy(180,145) 45 15 "Next >" 200
  4038.       PushButton @xy(135,145) 45 15 "< &Back" 100 Disabled
  4039.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  4040.       Static @xy(8,140) 269 1 "" BlackRect
  4041.    EndDialogBox
  4042.  
  4043. If [Dialog_Rc] = 300
  4044.    SoLong Quietly
  4045. EndIf
  4046.  
  4047. :Product_Test
  4048. do Product_License
  4049. If [Dialog_Rc] = 100
  4050.    Goto MainMenu
  4051. EndIf
  4052.  
  4053. ;; Get install directory
  4054. ;;
  4055. :InstallCheck
  4056. Do InstallCheck
  4057. If [Dialog_Rc] = 100 .Or. [ReadWrtErr_Rc] = 100 .Or. [FSPCErr_Rc] = 100
  4058.    Goto Product_Test
  4059. EndIf
  4060.  
  4061. ;; Get program group
  4062. ;;
  4063. ;;:GetGroup
  4064. ;;[GetGroup_DefaultGrp] := [Default_Program_Group]
  4065. ;;Do GetGroup
  4066. ;;If [Dialog_Rc] = 100
  4067. ;;   Goto InstallCheck
  4068. ;;EndIf
  4069.  
  4070. ;; Do user registration
  4071. ;;
  4072. :RegisterUser
  4073. Do RegUser1
  4074. If [Dialog_Rc] = 200
  4075.    Goto MainMenu
  4076. EndIf
  4077.  
  4078. :DialP
  4079. Do DialPreFix
  4080. If [Dialog_Rc] = 100
  4081.    Goto RegisterUser
  4082. EndIf
  4083.  
  4084. Do SendData
  4085. If [Dialog_Rc] = 100 .OR. [Dialog_Rc] = 200
  4086.    Goto DialP
  4087. EndIf
  4088. If [Dialog_Rc] = 300
  4089.    UpDateWindow
  4090.    Do OnLine
  4091.    If [Dialog_Rc] = 100
  4092.       Goto DialP
  4093.    EndIf
  4094. EndIf
  4095.  
  4096. :FullIns
  4097. SetMouseCursor Wait
  4098. ;; Get installation info, install directory, program group
  4099. ;; do installation checks
  4100. ;;
  4101.  
  4102. ;;[IDIR_Info]   := [InstallationDirectory]\InfoBase
  4103. ;;[IDIR_SDW]    := [InstallationDirectory]\ETM
  4104.  
  4105. Do FullInstall
  4106.  
  4107. ;;;; Find Views31 exe file
  4108. ;;;;
  4109. ;;:FindViews31
  4110. ;;Do FindViews31
  4111.  
  4112. ;;;; Install Visual Release Icons
  4113. ;;Do IIcons
  4114. ;;ClearScreen
  4115. ;;
  4116. ;;;; Modify LNAME.Ini file info
  4117. ;;;;
  4118. ;;Do ModIni
  4119.  
  4120. ClearScreen
  4121. HideBitMap 13
  4122.  
  4123.  
  4124. SetMouseCursor Arrow
  4125. ;; Installation complete, display exit screen
  4126. ;;
  4127. Do ByeBye     ;; Run and exit installer
  4128.  
  4129. EndScript
  4130.  
  4131.